对于我的搜索引擎,我有页面...
/index.php?q=TERM
...显示搜索结果。
使用mod_rewrite,我可以通过以下方式访问:
/ Q / TERM
我在.htaccess中使用的规则是这样的:
RewriteEngine on
RewriteRule ^q/(.+)$ index.php?q=$1
这很有效。但是,当我在HTML表单中输入一个术语并单击“提交”按钮时,我仍然会重定向到...
/index.php?q=TERM
如何让我的GET表单直接调用新的和短的URL?它的代码是:
<form action="/index.php" method="get" accept-charset="utf-8">
...
</form>
答案 0 :(得分:1)
来自将始终使用?q=TERM
调用您的网页,而您的重写规则只会说:/q/TERM
实际上是?q=TERM
然后您需要将?q=TERM
重写为/q/TERM first
。但我们需要照顾循环。
让我们试试:
EDIT1:其他标志。 (我发现[C]重新执行规则,所以我们不希望这样做)
RewriteCond %{QUERY_STRING} ^q=(.*)$ [NC]
RewriteRule ^$ /q/%1 [NC,L]
RewriteRule ^q/(.+)$ index.php?q=$1 [NC,L]
告诉我这是怎么回事。
相关:SO entry