这个很奇怪。
我有两个网站用于同一个客户端。两个站点中都存在某些页面,并且他们不希望维护两个副本,因此我告诉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/?$
之外,所有这些都有效。
到底发生了什么事? “userguide”是某种保留字还是mod_rewrite ??
答案 0 :(得分:1)
添加(在顶部)以禁用MultiViews:
userguide.html
Apache docs on mod_negotiation描述了多视图选项启用时的功能:
如果 服务器接收/ some / dir / foo的请求和/ some / dir / foo没有 存在,然后服务器读取目录查找所有命名的文件 foo。*,并有效地伪造了一个类型地图,列出了所有这些 文件,为它们分配相同的媒体类型和内容编码 如果客户通过名字要求其中一个,那就会有。然后呢 选择最符合客户要求的,并返回 文档。
另一种可能性是删除{{1}}文件,如果它已经不再使用了。