为什么我的htaccess不喜欢这个URL?

时间:2012-10-23 16:52:15

标签: .htaccess mod-rewrite

我希望有人能帮助我。

这是我的.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

如下所示的URL将成功重写:

http://jobs2.local/main/out/16339404/http://www.google.com/

但是,如果我对URL的最后一部分(http://www.google.com/部分)进行编码,则会收到404错误:

http://jobs2.local/main/out/16339404/http%3A%2F%2Fwww.google.com%2F

罪魁祸首似乎是%2F,但我不明白为什么会发生这种情况。

你们有谁知道问题是什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

我想出来了。

问题是Apache不喜欢%2F。

解决方案是将“AllowEncodedSlashes On”添加到网站的httpd.conf中的VirtualHost条目,例如

<VirtualHost *:80>
    AllowEncodedSlashes On
    ServerName jobs2.local
    ...
</VirtualHost>

我已对此进行了测试,并且按预期工作。