Htaccess重定向子域不起作用

时间:2014-10-31 15:27:04

标签: .htaccess redirect

我有一个名为es的子域名,当有人想要输入mysite.com/es时我需要它可以重定向到es.mysite.com。它适用于以下htaccess:

RewriteEngine On  
RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC] 
RewriteRule ^(.*)$ http://es.mysite.com/$1 [R=301,L]  
RedirectMatch permanent ^/es/?$ http://es.mysite.com/$1

问题在于有人输入mysite.com/es/bla/bla/bla。在这种情况下,使用我的htaccess上的当前配置,用户不会被重定向,我希望用户可以被重定向。

例如:

如果我输入:

http://letsbonus.com/es/barcelona/spa-experiencie-para-2-opcion-masaje-desconecta-roc-nature-273710

这是重定向到:

http://es.letsbonus.com/barcelona/spa-experiencie-para-2-opcion-masaje-desconecta-roc-nature-273710

提前致谢。

2 个答案:

答案 0 :(得分:1)

您需要在mysite.com的根目录.htaccess中使用这一条规则:

RewriteEngine On  
RewriteCond %{HTTP_HOST} ^(www\.)?(mysite\.com)$ [NC] 
RewriteRule ^es/(.*)$ http://es.%1/$1 [R=301,L,NE]

答案 1 :(得分:0)

你的两条规则发生冲突:

  • 基本网址:http://example.com/es/test
  • 非www重定向 - > http://www.example.com/es/test
  • es子域重定向 - > http://es.example.com/test
  • 非www重定向...(我们不再位于www子域名下)

我会使用此htaccess来获得例外结果:

RewriteEngine On  

RewriteCond %{HTTP_HOST} !^(www|es).example.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

RewriteRule ^es/(.*)$ http://es.example.com/$1 [R=301,L]