在提出这个问题之后:Clean URLs for search query?我尝试了一些mod_rewrite:
RewriteCond %{QUERY_STRING} ^s=([a-z]+)$ [NC]
RewriteRule / /s/$1? [NC,R=301,L]
RewriteRule ^s/([a-z]+)$ /?s=$1 [NC,L]
目标是什么?
这看起来像是双重工作但是如果你仔细看看你会看到我试图完成的事情:
如果我这样考虑它应该是可能的。 所以我想寻求有经验的改编版的帮助来帮助我解决这个问题。
Number 2有效,但就是这样。
答案 0 :(得分:1)
这应该可行,我用一些不同的名字和dirs进行测试,但在你的情况下这应该没问题。
注意:对于来自RewriteCond的匹配组,您必须使用%1
而不是$1
。
RewriteCond %{QUERY_STRING} ^s=([a-z]+)$ [NC]
RewriteRule ^$ /s/%1? [NC,R,L]
RewriteRule ^s/([a-z]+)$ /?s=$1 [NC,L]
编辑调试(参见注释):
我的测试是:
| /
| --> doc
| |
| --> doc.php (takes doc as GET parameter)
| | index.php
我的apache重写是
RewriteCond %{QUERY_STRING} ^doc=([a-z]+)$ [NC]
RewriteRule ^$ /doc/%1? [NC,R,L]
RewriteRule ^doc/([a-z]+)$ /doc/doc.php?doc=$1 [NC,L]
然后要求domain.com/?doc=query显示doc is query
适合我。