2014-12-18 89 views
1

我正在尋找在我們的網站使用mod重寫語言開關。而不是顯示:modrewrite語言參數

https://www.website.com/rest/of/my-site?lang=it 
https://www.website.com/en/rest/of/my-site 

問題出現在這裏。 甲我們目前的國防部重寫配置:

# General rewrites 
RewriteRule -p([0-9]+)\.html$ index.php?module=page&id=$1&%{QUERY_STRING} [L] 
RewriteRule (news|nieuws)/(.*)\.html$ index.php?module=news&url_raw=$2&%{QUERY_STRING} [L] 
RewriteRule (.*)\.html$ index.php?module=page&url_raw=$1&%{QUERY_STRING} [L] 
#rewriteRule contact(/|)$ index.php?module=contact&%{QUERY_STRING} [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ index.php?module=page&url_raw=$1&%{QUERY_STRING} [L] 

乙國防部重寫和PHP片斷 當國防部重寫工作的用戶應該能夠從

  • website.com/en/rest切換/的/我的現場
  • website.com/it/rest/of/my-site

而不是

  • website.com/en/rest/of/my-site?lang=it

我嘗試了好幾種選項(language parameter rewrite with mod_rewrite),但我不與它來遠遠不夠。

+0

是請求總是指向website.com/en如果不是其他區域?這意味着,我們可以依靠第一個文件夾代表語言環境的事實嗎? – LucasF 2014-12-19 00:02:47

+0

是的,這是正確的。 Al/en,/等等都指向同一個文件夾。 – Influenist 2014-12-20 14:59:15

回答

0

嘗試增加這對你的規則上:

RewriteCond %{THE_REQUEST} \ /+(.*)\?(.*?)&?lang=([^&\ ]+)([^\ ]*) 
RewriteRule^/%3/%1?%2%4 [L,R] 

RewriteCond %{QUERY_STRING} !(^|&)lang= 
RewriteRule ^([a-z][a-z])/(.*)$ /$2?lang=$1 [L,QSA] 
+0

工程就像一個魅力! :) – Influenist 2014-12-22 13:11:44