htaccess - 重定向子域内的内容,但不重定向子域

时间:2012-06-24 23:37:36

标签: .htaccess redirect directory subdomain

我目前正在使用:

RedirectMatch 301 http://blog.domain.com/(.*) /blog/article/$1

将以下旧链接重定向至:blog.domain.com/article-title至www.domain.com/blog/article/article-title

然而,当我只是去blog.domain.com时,它会带我去www.domain.com/blog/article。

这是一种意想不到的副作用。我想将blog.domain.com/本身简单地重定向到www.domain.com/blog,但内容中的内容如上所述重定向(效果很好。)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

/(.*)将匹配斜杠后跟零个或多个字符,这意味着http://blog.example.com/将匹配并由此规则处理。将其更改为/(.+)只会匹配斜杠后跟一个或多个字符,这应该会停止根重定向。这样的事情怎么样:

Redirect 301 / http://www.example.com/blog
RedirectMatch 301 /(.+) http://www.example.com/blog/article/$1

如果放入blog.example.com的虚拟主机,这将有效,假设[www。] example.com位于单独的虚拟主机中。如果你在一个虚拟主机中处理它们,这将无休止地重定向到它自己。我知道在一个虚拟主机中处理它的唯一方法是使用mod_rewrite。这样的事情,也许是:

RewriteEngine On

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

RewriteCond %{HTTP_HOST} ^(www\.)?blog\.example\.com$ [NC]
RewriteRule ^(.+)$ http://www.example.com/blog/article/$1 [R=301,L]