我需要重定向一些URL,因为它们指向同一个页面。例如:
https://www.example.com/home
https://www.example.com/Home
https://www.example.com/index.php
所有这些URL都需要Map到:
https://www.example.com/
因此,我在.htaccess文件中使用了此函数,它工作正常:
Redirect 301 /home https://www.example.com/
但问题是,当我尝试访问如下URL时:
https://www.example.com/home/sub
它重定向到导致404:
https://www.example.com//sub
我需要这个URL工作,因为它是代替404或任何重定向:
https://www.example.com/home/sub
1条答案
按热度按时间kqqjbcuj1#
因为mod_alias
Redirect
指令是前缀匹配的,匹配之后的所有内容都被复制到目标URL的末尾。所以,当你请求/home/sub
时,/sub
被复制到https://www.example.com/
,得到https://www.example.com//sub
。我想你也有mod_rewrite指令,你应该避免混合两个模块的重定向,所以尝试下面的方法,而不是在根
.htaccess
文件的顶部使用mod_rewrite:检查
REDIRECT_STATUS
环境变量的 condition 确保只处理直接请求,而不是内部重写的请求,后者将由于具有前端控制器模式(我假设您稍后在文件中有)而产生。您需要清除浏览器缓存,因为错误的301(永久)重定向将被浏览器缓存。请使用302进行测试,以避免潜在的缓存问题。
参考编号: