2015-10-13 91 views
0

我想英语版本添加到我的子域级网站如下:.htaccess的追加到查询字符串QSA没有重定向

  • en.mywebsite.com/business-name:这将显示英文版本的子页面。

    Options -Indexes 
    
    RewriteEngine On 
    RewriteBase/
    
    RewriteCond %{HTTP_HOST} . 
    RewriteCond %{HTTP_HOST} !^www\.mywebsite\.com [NC] 
    RewriteCond %{HTTP_HOST} !^en\.mywebsite\.com [NC] 
    RewriteRule (.*) http://www.mywebsite.com/$1 [R=301,L] 
    
    RewriteCond %{HTTP_HOST} ^en\.mywebsite\.com 
    RewriteRule ^(.*)$ http://www.mywebsite.com/$1?language=en [QSA] 
    

    的问题是,它是通过将用户重定向做它www.mywebsite:

现在我其实已经通过附加子域的查询字符串用下面的代码来实现它以某种方式.com/business-name?language = en,但是我想避免重定向,而是虚拟地传递“新生成的”查询字符串。

是否可以实现,还是QSA总是重定向?

在此先感谢。

+0

它将** **总是重定向如果重写规则是另一个域。 en.example.com和www.example.com并不相同。所以无论R标志是否存在,apache都会重定向。如果您不想重定向,您可能必须使用P标志进行代理。 –

回答

0

尝试从改变你的最后一条规则:

RewriteCond %{HTTP_HOST} ^en\.mywebsite\.com 
RewriteRule ^(.*)$ http://www.mywebsite.com/$1?language=en [QSA] 

RewriteCond %{HTTP_HOST} ^en\.mywebsite\.com 
RewriteCond %{QUERY_STRING} !language= 
RewriteRule ^(.*)$ /$1?language=en [L,QSA] 
+0

这个伎俩!谢谢 :) –

相关问题