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]
но без помощи.
Я не уверен, что может быть не так в вашей конфигурации, как у вас 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
Добавляю такую же проблему. Когда я использовал:
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#30067581