如何将访问我的文件的人重定向为目录?

时间:2011-09-14 14:01:19

标签: apache mod-rewrite

我有以下情况:

在我的网络服务器上,我有一个运行websvn的实例,其中特定的存储库和修订版可以通过URL访问,如

http://www.myhost.com/listing.php?repname=repository1&path=%2Ftrunk%2Fbackend

不知何故,在野外,正在使用错误的URL来访问此

http://www.myhost.com/listing.php/?repname=repository1&path=%2Ftrunk%2Fbackend

(注意list.php之后的斜线)

现在,尽管URL工作且websvn仍显示网页,但图像和样式表无法正确加载,因为它们是相对引用的。

我尝试将.htaccess文件添加到webroot,以将访问该文件的人员重定向到正确的URL。

我尝试了多种变体,最后得到了这个文件:

RewriteEngine on
RewriteRule ^/listing.php/ listing.php [R=301,QSA]

但是,既然我在这里写作,你已经猜到了:它不起作用。

我也试过

RewriteEngine on
RewriteRule ^/listing.php(.*) listing.php$1 [R=301,QSA]

我做错了什么?

1 个答案:

答案 0 :(得分:1)

也许除其他事项外,RewriteRule中以“.htaccess”开头的^/将永远不会匹配任何内容。 (包含前导斜杠的示例适用于全局配置文件。)删除前导斜杠并查看是否有帮助。

另外,我建议将301更改为307,直到它正常工作。否则,您的浏览器将缓存301结果,在不咨询您的服务器的情况下重定向后续引用,并且可能会给您带来非常混乱的结果。