【发布时间】:2012-09-25 14:58:42
【问题描述】:
这是我遇到的一个问题:
-
我的虚拟主机被配置为将不存在的文件重写为 /init.php?REQUEST。例如:www.test.com/module/action 将重写为 /init.php?module/action。这是一个非常常见的功能,通过以下方式实现:
<Directory /path/to/test.com/htdocs/> RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ init.php?$1 </Directory> -
现在我正在尝试打开这个:
location.href = 'http://www.test.com/module/action/' + encodeURIComponent('htp://www.google.com/');
但是现在 apache 甚至没有进入重写部分就抛出 404 页面。
- 事实 1:由于 %2F 符号(正斜杠)而发生这种情况
- 事实 2:apache 甚至没有进入
规则。很明显,我们想要 htdocs/ 下的东西,那么为什么 apache 不进入目录规则???
有人可以向我解释一下为什么斜线符号会搞砸吗?
感谢您的意见
【问题讨论】:
-
它在正确的 VirtualHost 指令中吗?
-
您的规则对我来说很好,它会返回我的 init.php 脚本。但是您的 404 是否与 google url 格式错误有关?
htp://www.google.com/ -
@CappY 是的 - 它在正确的指令中:)
-
@JonLin nooo ...它还远远没有注意到这一点。 google 只是一个例子 - 真正的 url 不是格式错误的,但 %2F 符号肯定是导致问题的符号。如果我不对其进行 urlencode - 它工作正常!我想知道apache版本(Apache / 2.2.17)是否与它有关......
标签: php apache mod-rewrite redirect