如何在.htaccess文件中模拟子域/语言

时间:2012-02-27 08:14:30

标签: .htaccess mod-rewrite

我一直在寻找一些方法来实现GTranslate企业版的语言子域行为并且已经接近了。

基本上,如果你想要像fr.domain.com,es.domain.com,de.domain.com等子域名 对于PRO版本(一般实现),那么应该有一种方法来处理这个.htaccess文件中的修改。

这不太对,但它即将结束 - 例如,如果您想要德语的“de.domain.com”,可能会有以下修改:

RewriteCond %{THE_REQUEST} !^[A-Z]+\ /gtranslate/
RewriteRule ^(.*)$ http://de.domain.com/gtranslate/translate.php?lang=de&url=$1 [NC,L,R=301]

条件是防止递归...这似乎接近,但问题是浏览器中的网址现在显示de.domain.com/gtranslate/translate.php?lang=de&url=about.html而不是所需的de.domain.com/about.html

必须有办法处理这个问题,以便我们可以模仿这种行为。

动机:也许我应该说明这一点。

  1. 我正在使用Joomla的通用版本 - 似乎大部分时间都可以工作,但是在表单提交过程中它会丢失语言,因为表单的重定向(POST?)会丢失语言代码(通常是2个字母URL的前缀。
  2. 如果我能够为每个子域保留一种语言,那么似乎我能够在表单提交期间正确保留语言(以及使用子域来反映语言的潜在“好处” - 可以甚至是国家的名字。)。
  3. 任何在mod_rewrite中表现更好的人都想对此进行一次尝试?

1 个答案:

答案 0 :(得分:0)

  

必须有办法处理这个,以便我们可以模仿这个   行为。

没有。只要你执行301这是一个完全重定向,所以URL被修改了,不幸的是,你无法避免这种情况。