mod_rewrite:根据HTTP_HOST设置GET

时间:2009-08-27 17:20:12

标签: apache mod-rewrite get

我最近发现了mod_rewrite模块的强大功能,我需要一些帮助。

假设我的网站有两个域名映射到同一主机...

example.com
example.net

我想根据HTTP_HOST设置一个GET var(即.com或.net?)......

/index.php?lang=en
/index.php?lang=es

但是需要注意的是......我已经有3个RewriteRules ......

RewriteRule ^(about|contact)/?$ /index.php?page=$1 [NC]
...
..

如果我按照here(RewriteCond的底部)的例子,我将不得不为每个HTTP_HOST复制3个RewriteRules(即.com或.net)并静态添加GET var; & lang = en OR& lang = es和每条规则的结尾...

是否有某种方法可以自动执行此操作,而无需再次复制3条规则,最后只有一条get var?

PS。我知道这可以通过脚本语言来完成,但我想知道是否可以通过mod_rewrite和如何完成。

感谢名单!

1 个答案:

答案 0 :(得分:2)

尝试在所有其他规则之前加入类似的内容:

RewriteCond %{HTTP_HOST} .com$
RewriteRule ^(.*)$ $1?lang=en [QSA]
RewriteCond %{HTTP_HOST} .net$
RewriteRule ^(.*)$ $1?lang=es [QSA]

虽然最好使用环境变量来指定语言,但在每个虚拟主机中使用不同语言的SetEnv指令。

或者甚至可能更好,请查看mod_negotiation,其中包含一些处理语言的标准功能。