我的形式很简单:
<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]
但我不知道如何使用正确的网址(没有&amp; s =)没有重定向
答案 0 :(得分:1)
您的重写规则:RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]
仅在内部向服务器重写一个方向。此规则对浏览器没有任何影响,除了响应看起来像/recherche/something
的请求发送的内容。如果您确实希望更改地址栏中的URL,则需要以重定向响应请求,而不是在内部执行某些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,并在内部将其重写回查询字符串。