htaccess子域重定向到文件夹

时间:2014-08-05 18:57:56

标签: .htaccess mod-rewrite redirect

我正在尝试让我的子域名显示文章路径,但它不会起作用。 如果我去blog.domain.com,它会重定向到https://www.domain.com/blog/

我希望https://www.domain.com/blog/留下 blog.domain.com 如果我去https://www.domain.com/blog/article/1显示 blog.domain.com/article/1 /

使用godaddy的cpanel,我添加了子域转发(没有屏蔽 - 因为它总是显示blog.domain.com,我想看到路径所以我删除了屏蔽)

我试过了:

RewriteCond %{HTTP_HOST} ^(www\.)domain\.com$
RewriteRule ^blog/(.*)$ http://blog.domain.com/$1 [L,R=301,QSA]

RewriteCond %{HTTP_HOST} ^blog\.domain\.com$
RewriteCond %{REQUEST_URI} !blog/
RewriteRule ^(.*)$ blog/$1 [L,QSA]

这似乎没有做任何事情......

修改

我只将htaccess放在根文件夹中。 我也试过

RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
RewriteRule ^blog(.*)$ http://blog.domain.com/$1 [L,R=301,QSA]

当我访问blog.domain.com时,它会重定向到www.domain.com/blog/并且页面无法加载

1 个答案:

答案 0 :(得分:0)

  

我将它设置为:当访问blog.domain.com时 - >重定向到www.domain.com/blog

这就是您的浏览器的位置栏正在发生变化的原因。当您重定向时,服务器通过说&#34来响应浏览器;您要查找的内容不在您刚刚访问的网址上,而是(在301的情况下,永久)此新网址#34;,因此浏览器加载新的URL,向新URL发送一个全新的单独请求。这会导致位置栏发生变化。

关闭重定向。

然后,您应该能够将您拥有的规则保留在主域的根文件夹

RewriteCond %{HTTP_HOST} ^(www\.)domain\.com$
RewriteRule ^blog/(.*)$ http://blog.domain.com/$1 [L,R=301,QSA]

由于blog.domain.com的*文档根目录已经/blog/,因此您不需要搞乱其他规则。