Oracle Linux 7 x64上的Apache 2.4.27。
我可以正确调用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"
我看到“Hello,world via html!”
但是,我不能使用RewriteRule:
RewriteRule "^/test" "/cgi-bin/helloworld.cgi"
这会导致400错误的请求。 那我怎么直接打电话呢?
如何在进入/cgi-bin时使我的RewriteRule工作? 这似乎是我的问题。 我尝试添加[L]和[L,PT]但没有任何帮助。
我不确定你的configuration有什么问题,你如何设置ScriptAlias ?
我已经用下面的configuration进行了testing,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>