将GET-URL更改为规范(mod_rewrite)

时间:2011-04-03 10:48:02

标签: forms url mod-rewrite

对于我的搜索引擎,我有页面...

/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>

1 个答案:

答案 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