Htaccess在没有重定向的情况下附加到QSA的查询字符串

时间:2015-10-13 14:07:15

标签: .htaccess mod-rewrite url-rewriting 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来实现的,但我想避免重定向,而是虚拟地传递“新生成的”查询字符串。 / p>

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

提前致谢。

1 个答案:

答案 0 :(得分: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]