.htaccess htaccess-重定向子域内的内容,但不重定向子域
我目前正在使用:.htaccess htaccess-重定向子域内的内容,但不重定向子域,.htaccess,redirect,directory,subdomain,.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/本身可以简单地
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,但其中的内容可以如上所述重定向(这很好)
任何帮助都将不胜感激 /(.*)
将匹配一个斜杠,后跟零个或多个字符,这意味着http://blog.example.com/
将匹配并由此规则处理。将其更改为/(.+)
将只匹配后跟一个或多个字符的斜杠,这将停止根重定向。像这样的东西怎么样:
Redirect 301 / http://www.example.com/blog
RedirectMatch 301 /(.+) http://www.example.com/blog/article/$1
假设[www.]example.com位于一个单独的虚拟主机中,那么如果为blog.example.com设置一个虚拟主机,这将起作用。如果您在一个vhost中处理所有这些问题,那么这将无休止地重定向到自身。据我所知,在一个vhost中处理它的唯一方法是使用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]
很好,这有一点帮助,但我仍然希望blog.domain.com重定向到domain.com/blog如果你把上面的代码片段放在博客子域的虚拟主机中,它应该可以做到这一点(除非我遗漏了什么)。谢谢!当我为我的代码量身定做时,你的代码工作正常,我没有看到你的编辑:)
Redirect 301http://blog.domain.com http://www.domain.com/blog 重定向匹配301http://blog.domain.com/(.+) http://www.domain.com/blog/article/$1
太好了!我没有意识到你可以像那样格式化重定向
规则(似乎意味着第一个URL必须以斜杠开头),但是如果它起作用,它就起作用了。Arg,它不再起作用了。blog.domain.com/article-name不会重定向到domain.com/blog/article/article-name:(有什么想法吗?当我像你的例子中那样使用斜杠时,我会得到一个重定向循环