我正在尝试在.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]
感谢任何帮助。
答案 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
。