2010-07-05 41 views

回答

0

基本重寫:

RewriteEngine On 
RewriteRule http://www.site.com/?lang=(.+?)&type=(\d+?)&mode=(\d+?) http://www.site.com/$1/$2/$3 [L,R=permanent] 

編輯:更改重寫標誌來強制永久重定向

+0

這似乎工作:在此服務器上找不到請求的URL。 – werd 2010-07-05 19:56:37

+0

你有一個頁面響應'site.com/lv/1/2'嗎?你在使用某種框架嗎? – 2010-07-05 20:57:00

1

假設你真的想重寫/lv/1/2?lang=lv&type=1&mode=2(我看不出有什麼理由做對面)並且沒有其他重寫是主動的,這應該是關鍵:

RewriteRule ^/([^/]*)/([^/]*)/([^/]*)$ ?lang=$1&type=$2&mode=$3 [L] 

另外;如果你想將它們包含在你的URI中,你最好用更有用的信息替換那些神奇的數字。

編輯:如果真的是你想要做的對面,一看便知由馬特·S.

+0

是的,我反其道而行之:P謝謝! – werd 2010-07-05 20:00:49

0

您需要單獨處理URI路徑和查詢。如果這些參數出現在非常相同的順序,你可以這樣做:

RewriteCond %{QUERY_STRING} ^lang=([^&]+)&type=([^&]+)&mode=([^&]+)$ 
RewriteRule ^$ /%1/%2/%3? [L,R=301] 

否則,你將需要把他們在正確的順序使用這個規則之前,或採取每個參數在一個時間。

+0

這些都不是以任何方式工作,還有什麼我需要改變在Apache配置或其他? – werd 2010-07-06 11:39:57

+0

@werd:你使用強制性的'RewriteEngine on'嗎?你想在哪裏使用該規則? – Gumbo 2010-07-06 12:14:43

+0

是的,我正在使用它,我正在使用它的網站索引。在根目錄中,我有index.php和.htaccess文件。 – werd 2010-07-06 14:11:16