Apache - .htaccess

3

由于我没有找到任何能够帮助我的答案,我差点要崩溃了......非常感谢您的帮助。

问题如下:我重新启动了一个网站,并想将旧的和无效的/cgi-bin/...网站重定向到新的索引页面。以下是我在.htaccess文件中的设置:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$ #(this works)
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] #(this works)
RewriteRule ^cgi-bin(.*)$ / [R=301,L] #(this doesn't work!)
RewriteRule ^pdf(.*)$ / [R=301,L] #(this works)

我的问题在于这一行:

RewriteRule ^cgi-bin(.*)$ / [R=301,L]

如果我将完全相同的规则添加到测试服务器(同一主机提供商)的htaccess中,则会完美地运行。唯一的区别是cgi-bin文件夹位于htdocs之外,但我认为这不应该是问题。我无法看出问题在哪里...

1个回答

2
问题在于当 cgi-bin 存在于 htdocs 外部时,htdocs 中的 .htaccess 文件永远不会运行,因为它仅适用于包含它及其子目录的目录。将 cgi-binRewriteRule 放入您的 cgi-bin 中的 .htaccess 文件中。

谢谢。我已经尝试过这个,但它也不起作用...当我调用/cgi-bin时,无论是得到"forbidden"还是当我调用/cgi-bin/something-else时得到"not found"。 - Christian
你是否为你的cgi-bin目录设置了<Directory>块,并将AllowOverride all设置为所有?否则,.htaccess文件将不会被处理。你可能还需要Options +FollowSymLinks - user2493235
谢谢你的回答。不幸的是,我无法这样做,因为我没有访问httpd.conf的权限 - 它在托管提供商那里。也许我可以在那里询问... - Christian
是的,您将永远无法从文档根目录的.htaccess文件中处理cgi-bin请求,因为它不会被检查,所以最好像您所说的那样联系主机。 - user2493235

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接