【发布时间】:2010-06-02 16:35:32
【问题描述】:
我的大部分网站都有 mod_rewrite。现在我有一个搜索通常会指向
search.php?keyword=KEYWORD
我正在尝试将其重写为
search/?keyword=KEYWORD
只是为了让它更干净一点。所以这是我的 mod_rewrite。 (还有其他规则,我只是发布不起作用的规则。)
RewriteRule ^search/?keyword=([^/\.]+)/?$ search.php?search=$1
当我以我希望的方式在地址栏中键入搜索时,我得到一个页面,告诉我它的“链接断开”(我猜这相当于 Chrome 的 404 错误)。那么我做错了什么?我认为问题是“=”或“?”登录规则(第一部分),因为当我取出 ?keyword= 部分时,它可以工作。这有意义吗?
编辑:这是我的完整 .htaccess 代码:
RewriteEngine on
RewriteRule ^$ index.php
RewriteRule ^thoughts$ archives.php
RewriteRule ^thoughts/$ archives.php
RewriteRule ^about$ about.php
RewriteRule ^about/$ about.php
RewriteRule ^search/\?keyword=([^/]+)$ search.php?search=$1
RewriteRule ^tags/([^/]+)$ tags.php?tag=$1
RewriteRule ^thoughts/([^/]+)$ post.php?title=$1 [L]
仍然收到错误页面...
【问题讨论】:
-
在正斜杠之前需要一个反斜杠吗?正斜杠对某些正则表达式库有意义。
-
不,尝试并没有改变任何东西。另外,我所有其他用斜线重写的工作都很好。不过谢谢!
标签: apache .htaccess mod-rewrite