我目前正在使用:
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,但内容中的内容如上所述重定向(效果很好。)
非常感谢任何帮助!
答案 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]