1

我正在尝试在我的 .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]

任何帮助表示赞赏。

4

2 回答 2

1

这是因为您没有使用()捕获组捕获路径以通过变量重写$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]

如果这是一个永久重定向,你应该R=301使用[L,R=301]

与往常一样,请查阅mod_rewrite 文档以获取完整的详细信息,并使用这个聪明的重写测试器进行实验。

于 2013-03-24T13:07:58.923 回答
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.

于 2013-03-24T13:08:21.960 回答