mod-rewrite不改变输入url

时间:2013-10-26 22:03:42

标签: .htaccess mod-rewrite

mod-rewrite question。

为什么以下代码

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ http://www.example.com/forms/index.php?i=$1 [QSA,L]

导致网址从

更改

http://www.example.com/search/foo/bar

http://www.example.com/forms/index.php?i=foo/bar

而以下代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^search/(.*)$ /forms/index.php [L]

不会更改输入网址?

有什么见解?

感谢。

1 个答案:

答案 0 :(得分:1)

因为当你有http://www.example.com,mod_rewrite 隐含重定向时,它与将R放在规则标志中相同。

mod_rewrite documentation的“替换字符串”下,它说:

  

绝对网址

     

如果指定了绝对URL,mod_rewrite将检查主机名是否与当前主机匹配。如果是,则删除方案和主机名,并将生成的路径视为URL路径。否则,将对给定的URL执行外部重定向。要强制外部重定向回到当前主机,请参阅下面的[R]标志。

相关问题