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

时间:2013-03-24 12:35:25

标签: .htaccess url-rewriting rewrite

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

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是因为您没有使用()捕获组捕获路径以通过变量$1重写。您需要将其附加到重定向网址。

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]

如果这是永久重定向,您应该在R=301

中使用[L,R=301]

与往常一样,请参阅the mod_rewrite documentation了解完整详情,并使用this clever rewrite tester进行实验。

答案 1 :(得分:0)

您需要捕获REQUEST_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