Htaccess语言子域

时间:2015-12-15 09:38:34

标签: .htaccess

我正在尝试添加规则以将子域转换为lang参数,仅适用于ende。到目前为止,所有其他规则都正常运行,但如果我尝试访问任何de.xyzen.xyz,我会获得Server not found

我认为既然它可以用于消除www。它也应该让我以同样的方式处理子域。我不确定是否必须按照不同的顺序排列它们。

有人可以将我的解决方案与我联系起来吗?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# redirect www to non www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 

# exclude acp directory
RewriteRule ^(admin)($|/) - 

RewriteRule ^sitemap(/?)$ index.php?page=Sitemap 

RewriteRule ^imprint(/?)$ index.php?page=Imprint 
RewriteRule ^impressum(/?)$ index.php?page=Imprint 

RewriteRule ^(.+?)/404(/?)$ index.php?page=Error404 

RewriteRule ^([0-9a-z-]+?)/([0-9a-z-]+?)/([0-9a-z-]+?)(/?)$ tutorial-redirect.php?category=$1&section=$2&chapter=$3 
RewriteRule ^([0-9a-z-]+?)/([0-9a-z-]+?)(/?)$ tutorial-redirect.php?category=$1&section=$2 
RewriteRule ^([0-9a-z-]+?)(/?)$ tutorial-redirect.php?category=$1 

# redirect en
RewriteCond %{HTTP_HOST} ^en\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1&lang=en 

# redirect de
RewriteCond %{HTTP_HOST} ^de\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1&lang=de 

</IfModule>

1 个答案:

答案 0 :(得分:2)

您可以使用:

# redirect en and de
RewriteCond %{QUERY_STRING} !lang=
RewriteCond %{HTTP_HOST} ^(en|de)\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%2/$1?lang=%1 [QSA,R,L]

或者重写(没有重定向):

RewriteRule ^ %{REQUEST_URI}?lang=%1 [QSA,L]