0

我希望有人可以帮助我。

这是我的 .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 但我不明白为什么会这样。

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

谢谢你。

4

1 回答 1

0

我想通了。

问题是 Apache 不喜欢 %2F。

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

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

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

于 2012-10-23T17:30:33.583 回答