我有以下重写规则设置:
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://domain2.com/$1 [r=301,nc]
现在,这可以将 domain.com/index.htm 重定向到 domain2.com/index.htm,但是它不会重定向任何文件夹,例如 domain.com/folder/ 不会重定向到 domain2.com/folder/
答案1
第一条建议:使用正确的大小写:
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://domain2.com/$1 [R=301,NC,L]
那么也许你忘记了“L”代表“最后的规则”。
当您说“它不会重定向任何文件夹,例如 domain.com/folder/ 不会重定向到 domain2.com/folder/”时,请解释它提供什么、它应该提供什么以及没有重写规则它会提供什么。然后我可以进一步帮助您。
两个提示:
请尝试使用该RewriteLog
指令:它可以帮助您追踪此类问题:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢的检查正则表达式的工具:
http://www.quanetic.com/Regex(不要忘记选择 ereg(POSIX)而不是 preg(PCRE)!)