Mod_Rewrite将子域和目录设置为GET变量

时间:2014-08-30 12:17:35

标签: apache .htaccess mod-rewrite url-rewriting

我编写了一个我想要多语言的网站,单独的语言应该可以通过子域访问,例如en.example.com,de.example.com等。

此外,我已经重写了设置"目录"作为GET变量,将example.com/name更改为example.com/index.php?page=name。

无论我尝试什么,我发现没有可能正确地将我需要使用的两个代码与这些相应的问题结合起来。每个人都有自己的作品,我只需要一种方法来组合两者,这样en.example.com/name将被重写为example.com/index.php?page=name&lang=en

我用于GET变量的目录

RewriteRule ^/?(\w*)/?$ index.php?page=$1 [L]

我发现子域名为GET变量

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !index\.php
RewriteCond %{HTTP_HOST} ^(.+?)\.example\.com$
RewriteRule .* /index.php?lang=%1 [L]

1 个答案:

答案 0 :(得分:3)

你只需要合并你的2条规则

RewriteEngine On

RewriteCond %{HTTP_HOST} ^((?!www\.)[^.]+)\.example\.com$
RewriteCond %{REQUEST_URI} !^/index\.php$ [NC]
RewriteRule ^(.*)$ /index.php?page=$1&lang=%1 [L]