Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess-重定向子域内的内容,但不重定向子域_.htaccess_Redirect_Directory_Subdomain - Fatal编程技术网

.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:(有什么想法吗?当我像你的例子中那样使用斜杠时,我会得到一个重定向循环