2011-12-08 75 views
0

你好我有一個問題,重寫這個網址 - 我如何逃避它,所以它會糾正自己?RewriteCond - 如何逃避這個?

的網址發給了進入公有領域,像這樣:

http://www.domain.com/directory/directory-2/10018485&key=3945 

我需要寫一個規則來改正:

http://www.domain.com/directory/directory-2/10018485?key=3945 

` 我特林做它像這樣,沒有成功....

RewriteCond %{REQUEST_URI} \/directory\/directory-2\/10018485&key=3945 
RewriteRule ^(.*)$ /directory/directory-2/?id=10018485&key=3945 [L] 

謝謝:)

+0

是目錄和目錄-2不變?並不改變? – NrNazifi

+0

我的東西REQUEST_URI是網址編碼。你可以把正則表達式放在RewriteRule中;不需要使用RewriteCond。試試這個:'RewriteRule^directory/directory-2/10018485&key = 3945 $/directory/directory-2 /?id = 10018485&key = 3945 [L,R]'(我在R中添加了R來防止重複的內容)。否則,請分別嘗試使用%26和%3D作爲'&'和'='。 – Gerben

回答

0

您無需在與%26的匹配中跳過&。你對我的工作很好,不知道爲什麼它不適合你。但是你不需要一個RewriteCond,你可以將2合併成一個規則。這些工作對我來說,當實際的請求是/directory/directory-2/10018485&key=3945directory/directory-2/10018485%26key=3945

RewriteRule ^directory/directory-2/10018485&key=3945$ /directory/directory-2/?id=10018485&key=3945 [L] 

在一個更抽象的意義:

RewriteRule ^directory/directory-2/([0-9]+)&key=([0-9]+)$ /directory/directory-2/?id=$1&key=$2 [L]