将rule.htaccess从blog.domain.com/anypath重写为www.domain.com/blog/anypath

将rule.htaccess从blog.domain.com/anypath重写为www.domain.com/blog/anypath,.htaccess,url-rewriting,rewrite,.htaccess,Url Rewriting,Rewrite,我正在尝试在.htaccess文件中编写一个规则,以便来自blog.domain.com/anypath的所有访问者都被重定向到www.domain.com/blog/anypath 我在下面编写的规则似乎只将blog.domain.com重定向到domain.com/blog,但如果URL包含blog.domain.com/path之类的路径,则似乎无法正确重定向 RewriteCond %{HTTP_HOST} ^blog\.* [NC] RewriteRule .* http://www.

我正在尝试在.htaccess文件中编写一个规则,以便来自blog.domain.com/anypath的所有访问者都被重定向到www.domain.com/blog/anypath

我在下面编写的规则似乎只将blog.domain.com重定向到domain.com/blog,但如果URL包含blog.domain.com/path之类的路径,则似乎无法正确重定向

RewriteCond %{HTTP_HOST} ^blog\.* [NC]
RewriteRule .* http://www.domain.com/blog [L]

非常感谢您的帮助。

这是因为您没有通过变量
$1
捕获组捕获要重写的路径。您需要将其附加到重定向URL

RewriteCond %{HTTP_HOST} ^blog\.* [NC]
# Capture the full path into $1 and append it to the output URL
RewriteRule (.*) http://www.domain.com/blog/$1 [L,R=301]
如果这是一个永久重定向,您应该在
[L,R=301]
中使用
R=301


一如既往,请查阅完整的详细信息,并用于实验。

这是因为您没有通过变量
$1
捕获组捕获要重写的路径。您需要将其附加到重定向URL

RewriteCond %{HTTP_HOST} ^blog\.* [NC]
# Capture the full path into $1 and append it to the output URL
RewriteRule (.*) http://www.domain.com/blog/$1 [L,R=301]
如果这是一个永久重定向,您应该在
[L,R=301]
中使用
R=301


像往常一样,查阅完整的细节,并用于实验。

您需要捕获您的
请求\u URI
并将其传递到路径

RewriteCond %{HTTP_HOST} ^blog.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/blog/$1 [R=301,L]
这将从博客的子域捕获路径,并将其重定向到正确的URL


例如,
blog.domain.com/post/736/test
将重定向到
www.domain.com/blog/post/736/test
,您需要捕获您的
请求URI
,并将其传递到路径上

RewriteCond %{HTTP_HOST} ^blog.domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/blog/$1 [R=301,L]
这将从博客的子域捕获路径,并将其重定向到正确的URL

例如,
blog.domain.com/post/736/test
将重定向到
www.domain.com/blog/post/736/test