使用.htaccess实现伪静态时如何避免重复内容问题?
解决伪静态URL重复内容问题(仅保留domain.com/contact/访问)
要解决domain.com/contact.php和domain.com/contact/的重复内容问题,核心是把直接访问.php文件的请求永久重定向到伪静态URL,同时保留现有伪静态规则。修改后的.htaccess代码如下:
Options +FollowSymLinks RewriteEngine On # 强制将contact.php的访问请求301重定向到/contact/ RewriteCond %{THE_REQUEST} ^GET\ /contact\.php RewriteRule ^contact\.php$ /contact/ [L,R=301,NE] # 保持原有规则:将不带斜杠的URL重定向到带斜杠版本 RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)([^./])$ %{REQUEST_URI}/ [L,R=301,NE] # 伪静态映射:/contact/ 内部指向 contact.php RewriteRule ^contact/$ /contact.php [L]
关键规则说明
- 第一条重定向规则:通过
%{THE_REQUEST}匹配原始HTTP请求(避免内部重写触发循环),只要用户直接访问contact.php,就会被301永久跳转到/contact/,搜索引擎会逐步将索引更新到伪静态URL,彻底解决重复内容问题。 - 第二条规则:保留你原有的URL规范处理,确保所有不带斜杠的有效URL自动补全斜杠,保持URL一致性。
- 第三条伪静态规则:加上
[L]标志,确保内部重写完成后不再继续匹配其他规则,避免不必要的规则冲突。
注意事项
- 确认服务器已启用
mod_rewrite模块,否则所有规则无法生效。 - 301重定向生效后,建议用浏览器开发者工具查看网络请求,验证重定向是否正常触发。
内容的提问来源于stack exchange,提问作者henryhill
相关产品推荐
相关产品推荐

