【发布时间】:2018-04-04 00:19:54
【问题描述】:
这个很奇怪。
我有两个网站供同一个客户使用。某些页面存在于两个站点中,他们不想维护两个副本,所以我告诉 Apache 将站点 A 中的这些 URL 重定向到站点 B 中的对应部分。
我的 .htaccess 文件中有以下指令:
RewriteRule ^/?$ https://www.site-b.example.com/ [R=301,QSA,L]
RewriteRule ^privacy/?$ https://www.site-b.example.com/privacy-policy/ [R=301,QSA,L]
RewriteRule ^terms/?$ https://www.site-b.example.com/terms-conditions/ [R=301,QSA,L]
RewriteRule ^userguide/?$ https://www.site-b.example.com/user-guide/ [R=301,QSA,L]
RewriteRule ^abcdefg/?$ https://www.site-b.example.com/user-guide/ [R=301,QSA,L]
(我使用 mod_rewrite 的 RewriteRule 而不是 mod_alias 的 Redirect / RedirectMatch 是有充分理由的,在这里我不会让你厌烦,我只想说它必须是那样的。)
奇怪的是,除了^userguide/?$ 之外,所有这些都可以工作。
- 当我转到 https://www.site-a.example.com/ 时,我会被重定向到 https://www.site-b.example.com/
- 当我转到 https://www.site-a.example.com/privacy 时,我会被重定向到 https://www.site-b.example.com/privacy-policy
- 当我转到 https://www.site-a.example.com/terms 时,我会被重定向到 https://www.site-b.example.com/terms-conditions
- 当我访问 https://www.site-a.example.com/userguide 时,没有重定向!
- 当我转到 https://www.site-a.example.com/abcdefg 时,我被重定向到 https://www.site-b.example.com/user-guide
这到底是怎么回事? “用户指南”是 mod_rewrite 的某种保留字吗??
【问题讨论】:
-
您有页面
userguide.php或目录userguide吗?其他的也一样吗? -
感谢@Croises - 是的,它是 userguide.html。我一定误解了 mod_rewrite 指令的优先顺序 - 在配置的其他地方有一条规则说现有文件和目录可以免于进一步重写/重定向,但我认为我的规则会首先得到处理。可能不会!如果您将评论添加为答案,我可以给它打勾并给予应得的支持:)
标签: apache .htaccess mod-rewrite