关于.htaccess重定向引发URL重复及内容重复的技术咨询
你的.htaccess重定向问题解答
问题1:输入example.com自动跳转到https://www.example.com
当前.htaccess里的规则是跳转到http://www.example.com,但实际是HTTPS,说明这个重定向来自服务器其他配置(比如Apache的SSL模块设置、主机面板的强制HTTPS选项,或者域名服务商的跳转规则),和当前.htaccess里的规则无关。
问题2:https://www.example.com与https://www.example.com/index.php内容重复
原因是:
- Apache默认会把目录根请求(
https://www.example.com/)自动解析到index.php,两个URL返回完全相同的页面内容 - 当前配置没有做规范重定向,没有把
index.php的请求301跳转到根域名,搜索引擎会识别为两个独立URL但内容一致,因此判定重复。
问题3:URL出现多次重复index.php(如https://www.example.com/index.phpindex.php)
主要原因有两个:
- 错误的用户输入或爬虫误请求,而服务器没有限制这类无效URL的处理
- 当前
ErrorDocument 404设置为https://www.example.com/index.php,当请求一个不存在的URL时,部分场景下可能出现URL拼接错误,导致重复追加index.php。另外,如果之前启用过被注释的那两条重定向规则,也可能触发循环拼接问题。
修正后的.htaccess配置
# -FrontPage- IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti* # 404跳转到根域名(避免URL拼接错误) ErrorDocument 404 / RewriteEngine on # 强制HTTPS + 规范WWW域名 RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NC] # 将带index.php的URL重定向到根域名,解决内容重复 RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ / [R=301,L] # 内部解析:根请求指向index.php(无需外部重定向) RewriteRule ^$ /index.php [L]
内容的提问来源于stack exchange,提问作者Born34
相关产品推荐
相关产品推荐

