2015-06-17 125 views
1

我需要虛擬URL合作處理與文件夾或子文件夾類似的.htaccess的語言檢測

www.example.com/en/xxx/ 
OR www.example.com/xxx/en 
OR www.example.com/xxx/xxx/en 

語言,都給予同樣的?lang=en

它的可能嗎?

感謝您

我對這個具體的例子測試這對於subdomaine

RewriteRule ^(.+)/$ /index.php?a=$1 [QSA,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule ^(.+)$ /index.php?a=$1 [QSA,L] 

# language 
RewriteCond %{HTTP_HOST} !^(www.)?example.com$ [NC] 
RewriteCond %{HTTP_HOST} ^(.+).example.com$ 
RewriteRule ^(.*)$ $1?ln=%1 [QSA,L] 

RewriteCond %{HTTP_HOST} ^(.+).example.com/$ 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

使用PHP工作

$url = explode('/', $_GET['a']); 
if(in_array('fr', $url)) { 
$language = 'fr'; 
} 
elseif(in_array('it', $url)) { 
$language = 'it'; 
} 
else { 
$language = 'en'; 
} 
+0

到目前爲止已經嘗試了什麼?我認爲解決方案的一部分取決於你如何路由你的請求。 – Crackertastic

+0

我編輯我的文章,但它的子域名工作 – Mozinor

+0

哪部分不在你的.htaccess中工作? –

回答

3

嘛。

example.com/xxx/en我需要的index.php?LANG = EN & A = XXX

您可以使用這樣的規則。

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/en/?$ /index.php?lang=en&a=$1 [L,QSA] 
+0

謝謝!正是我需要的 – Mozinor