.htaccess用于语言检测

时间:2015-06-17 17:20:53

标签: php apache .htaccess mod-rewrite

我需要使用虚拟网址来处理带有文件夹或子文件夹的语言,例如

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';
}

1 个答案:

答案 0 :(得分: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]