2012-09-26 55 views
0

可能重複:
Form Submit URL Formatting如何使用GET刪除形式的變量不進行重新定向

我有簡單的形式:

<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 

但我正確重寫URL是這樣的:

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

,但我不知道如何在正確的網址,以獲取(不& S =)沒有重定向

回答

1

你重寫規則:RewriteRule ^recherche/([^/]*)$ /index.php?page=recherche&s=$1 [L]只能在內部向服務器的一個方向重寫。這條規則也沒有對除哪些內容響應,看起來像/recherche/something的請求發送的任何瀏覽器的影響。如果你確實想在地址欄中的URL被改變,你需要與一個重定向響應請求,不能在內部做一些URI的mangling並返回的內容。要做到這一點,你需要:

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

然後你有你的規則:

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

他們兩個應該一起工作。一個瀏覽器重定向到URL沒有查詢字符串,另取不查詢字符串的URL和內部重寫回查詢字符串。

+0

因此,我不得不做出一個重定向!但它比在php中的條件更清潔......感謝Jon Lin =) – Julien

相關問題