0

可能重复:
表单提交 URL 格式

我有简单的形式:

<form method="GET" action="http://{$smarty.server.SERVER_NAME}/recherche/">
        <input type="text" name="s" value="Recherche" class="text" id="searchbox" />
        <input type="submit" class="search" value="Rechercher !" title="Rechercher !" />
</form>

当我提交表单时,网址会带我进入:

http://mywebsite.com/recherche/?s=mysearch

但我像这样正确地重写了网址:

# Recherche
RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]

但我不知道如何在没有重定向的情况下获取正确的 url(没有 &s=)

4

1 回答 1

1

您的重写规则:RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]仅在服务器内部向一个方向重写。该规则对浏览器没有任何影响,除了响应看起来像/recherche/something. 如果您确实希望更改地址栏中的 URL,则需要通过重定向响应request,而不是在内部进行一些 URI 修改并返回内容。为此,您需要:

RewriteCond %{THE_REQUEST} ^GET\ /recherche/\?s=([^&\ ]+)
RewriteRule ^recherche/$ /recherche/%1? [L,R=301]

然后你有你的规则:

RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]

他们两个应该一起工作。一种将浏览器重定向到没有查询字符串的 URL,另一种采用没有查询字符串的 URL,并在内部将其重写回查询字符串。

于 2012-09-26T21:21:47.313 回答