RewriteRule不能像我期望的那样工作

时间:2012-06-16 14:46:10

标签: mod-rewrite

我想要以下网址:

http://www.mydomain.com/search/string

转到

http://www.mydomain.com/dir/search.php?param=string

这是我的重写规则:

RewriteRule ^search/(string)$ /dir/search.php?param=$1 [NC,L]

令我发疯的是它有点有效。结果页面中的所有链接在a元素中都有'dir'。例如,我将鼠标悬停在显示

的链接上

http://www.mydomain.com/search/myawesomescript.php

状态栏中的

。正确的网址是

http://www.mydomain.com/myawesomescript.php

.htaccess文件位于root。为什么'搜索'会将自己插入重写中?什么是我不明白的?

1 个答案:

答案 0 :(得分:0)

你的RewriteRule告诉apache如果请求进入搜索/(字符串),它们应该由/dir/search.php处理,但它没有做任何事情来改变显示的URL。

你所谈论的内容将通过以下方式实现:

RewriteRule .* /dir/search.php?param=$1 [NC,L]

请注意,这会将所有内容重定向到search.php,因此您需要修改正则表达式或使用某些RewriteCond规则来限制范围。