Apache 2.4.27 mod_rewrite в cgi-bin не работает
Apache 2.4.27 на Oracle Linux 7 x64.
Я могу сделать правильные звонки https://example.com/cgi-bin/helloworld.cgi
,
Простой Perl-скрипт возвращает "Hello, world via cgi-bin!"
Я могу делать правильные вызовы статического контента в https://example.com/helloworld.html
Простой HTML-файл возвращает "Hello, world via html!"
я могу использовать RewriteRule
как:
RewriteRule "^/test" "/helloworld.html"
Я вижу "Привет, мир через HTML!"
Однако я не могу использовать RewriteRule как:
RewriteRule "^/test" "/cgi-bin/helloworld.cgi"
Это приводит к 400 ошибочных запросов. Но почему я могу назвать это напрямую?
Как мне получить мой RewriteRule
работать при переходе в /cgi-bin
? Это, кажется, моя проблема. Я пытался добавить [L]
а также [L,PT]
но не поможет
1 ответ
Я добавляю ту же проблему. Когда я использовал:
RewriteRule "^/test" "/cgi-bin/helloworld.cgi"
Это не сработало. Я должен был использовать LogLevel alert rewrite:trace3
проверить логи. В моем случае переписанный путь был префиксом document_root. Итак, вместо /cgi-bin/helloworld.cgi
Я получал /var/www/html/cgi-bin/helloworld.cgi
,
Чтобы решить эту проблему, я использовал два флага:
RewriteRule "^/test" "/cgi-bin/helloworld.cgi" [NC,PT]
Этот вопрос связан с https://stackoverflow.com/questions/30065739/mod-rewrite-rewrite-url-to-point-to-cgi-script-but-keep-rewrite-hidden/30067581
Я не уверен, что может быть не так в вашей конфигурации, как у вас ScriptAlias
ENV установлен?
Я проверил с конфигурацией ниже, и все, кажется, хорошо на Apache 2.4.10:
<VirtualHost 10.44.0.3:80>
DocumentRoot "/vat/www/mysite"
ServerName mysite.example.com
ErrorLog "/var/log/apache2/mysite.example.com-error_log"
CustomLog "/var/log/apache2/mysite.example.com-access_log" common
ScriptAlias "/cgi-bin/" "/var/www/mysite/cgi-bin/"
<Directory "/var/www/mysite">
Require all granted
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
<Directory "/var/www/mysite/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
RewriteEngine On
RewriteRule "^/test" "/cgi-bin/test.cgi"
</VirtualHost>
открытие http://mysite.exmaple.com/test открывает скрипт cgi