2011-04-03 97 views
0

對於我的搜索引擎,我有網頁...更改GET-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形式調用新的和短的網址?它的代碼是:

<form action="/index.php" method="get" accept-charset="utf-8"> 
... 
</form> 

回答

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

+0

謝謝你這個答案:)不幸的是,我的瀏覽器告訴我:網站將此請求重定向,以便它可以永遠不會結束。所以前兩行(RewriteCond + RewriteRule)不起作用。最後一行也是我之前的行。 – caw 2011-04-04 13:43:57

+0

嗯,我敢打賭它會失敗,但不能測試它。要檢查另一個線程是否有類似的循環。 – 2011-04-04 13:47:23

+0

更新! (我們不能再編輯通信了嗎?) – 2011-04-04 13:53:21