2011-09-28 78 views
0

我想重寫一個URL,以便傳遞的變量被替換爲新的ID,例如;URL重寫變量名

wwww.domain.com/default.php?s=1&lang=en

要改寫爲:

www.domain.com/default.php?id=1$lang=en

的s變量是與ID替換

我曾嘗試:

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/
RewriteCond %{QUERY_STRING} ^s=(.+)$ 
RewriteRule ^s=(.+)$ id=$1 [R,NC,L] 

RewriteRule ^s=(.+)$ id=%1 [R,NC,L] 

不幸運...我做錯了什麼?

感謝您的任何幫助!

回答

1

即使您沒有s作爲第一個變量,這也應該有效。 (不知道你真的想要什麼。)

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^(.*&)*s=(.*)(&*)$ 
RewriteRule ^default.php$ default.php?%1&id=%2%3 
+0

幾乎 - 現在它是一種廣泛的方式,因爲它也會匹配'/default.php?yes = 123&lang = en' – LazyOne

+0

謝謝,我已經修復了它。 – skyuzo

0

嘗試了這一點:

RewriteRule ^default.php?s=([0-9]+)&lang=en$ default.php?id=$1&lang=en 

編輯。 更通用的版本。

RewriteRule ([^?]+)?s=([0-9]+)&lang=([A-z]{2})$ $1?id=$2&lang=$3 
+0

對不起,我有一個錯字。 – cstrat

+0

RewriteRule不支持查詢字符串 - 只有在RewriteCond的幫助下。因此這個規則在Apache中完全沒用 – LazyOne

+0

LazyOne - 我總是以這種方式使用它,我知道這不是最好的方法。它應該工作,至少第一個應該。 – cstrat