0

我试图阻止 xyz.com 出现在浏览器地址栏中,但仍将 abc.com 流量定向到 xyz.com 站点。一旦我从 [QSA, L] 中删除了“R”,我就预计会发生这种情况。然而,似乎没有任何变化。我应该使用不同的 HTTP 标头或连接变量吗?

rewritecond %{HTTP_HOST} ^(www\.)?abc\.com$ [NC]
rewriterule ^ http://xyz.com/?snack [QSA,L]
4

1 回答 1

1

这是人们心中的一个大困惑,即通过删除R标志 URL 将永远不会改变,它将保持内部(静默)转发。

事实是,如果您在目标 URL 中更改域名(通过使用http://等),那么 URL将会更改并且它将是一个external redirect.

无 URL 更改(内部重写):

RewriteCond %{HTTP_HOST} ^(www\.)?abc\.com$ [NC]
RewriteRule ^foo/?$ /?snack [QSA,L]

URL 将更改(外部重定向):

RewriteCond %{HTTP_HOST} ^(www\.)?abc\.com$ [NC]
RewriteRule ^foo/?$ ttp://xyz.com/?snack [QSA,L]

PS:在转到不同的域时避免 URL 更改的唯一方法是使用mod_proxy被认为有点安全风险的方法。

于 2013-09-27T13:47:06.073 回答