2017-07-28 53 views
0

我想將URl重寫爲另一個,但重寫表達式不起作用。RewriteRule表達式不起作用

Ex。 URL1: 「http://www.demo.com/de-ch/case1/?id=23

而且

例。 URL2: 'http://www.demo.com/de-ch?id=23'

規則:RewriteRule ^(.....)([\?]|(.*))$ http://www.result.com/$1 這項規則,遵循結果:

http://www.result.com/de-ch?id=23 

但我需要的只是ISO代碼http://www.result.com/de-ch

什麼我的正則表達式失蹤?

回答

0

您無法匹配規則模式中的查詢字符串。查詢字符串在技術上不是路徑的一部分。你需要使用一個RewriteCond%{QUERY_STRING}變量:「?」

RewriteCond %{QUERY_STRING} ^id=23 
RewriteRule ^(.....) http://www.result.com/$1? 

注意在規則結果的末尾。這將刪除查詢字符串。

然而,因爲你不查詢字符串做任何事情,你可以離開它完全只有具備:

RewriteRule ^(.....) http://www.result.com/$1? 

注意,此規則將導致瀏覽器重定向到http://www.result.com/de-ch和如果你沒有解析該URL的資源,那麼你只會得到一個404或一些相關的錯誤。