我在尝试修复的网站上遇到 SEO 重复页面的问题。www.example.com/category/c1234 加载与 www.example.com/category/c1234garbage 相同,我一直在在线阅读并测试代码,到目前为止,我将其缩小到可能的正则表达式问题。我有以下几行
# url rewrites
RewriteCond %{REQUEST_URI} ^/index\.cfm/.+ [NC]
RewriteRule ^/index.cfm/(([^/]+)/?([^/]+)?)/?(.*)? /index.cfm/$4?$2=$3 [NS,NC,QSA,N,E=SESDONE:true]
我在规则中添加了一个 R,这样我就可以看到它是否正在通过那里,并且在它通过之后,最后的垃圾消失了。有人可以帮助我理解这一点并找出解决方法,因此当您访问 www.example.com/category/c1234garbage 时,它会重定向到 www.example.com/category/c1234
我已经在网上搜索了很长一段时间,并认为可能是时候在这里发帖了,因为我似乎找不到解决方案。我正在阅读“掌握正则表达式”,但我可能需要一段时间才能找到我正在寻找的答案。我很感激你能给我的任何帮助。谢谢你。
编辑:这是我在 RewriteEngine On Rewritebase /
# remove trailing index.cfm
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^index.cfm(\?)?$ / [R=301,L]
# remove trailing slash
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*)/$ /$1 [R=301,L]
# Remove trailing ?
RewriteCond %{THE_REQUEST} \?\ HTTP [NC]
RewriteRule ^/?(index\.cfm)? /? [R=301,L]
# SEF URLs
SetEnv SEF_REQUEST false
RewriteRule ^[a-z\d\-]+/[a-z]\d+/? /index.cfm/$0 [NC,PT,QSA,E=SEF_REQUEST:true]
RequestHeader add SEF-Request %{SEF_REQUEST}e
RewriteCond %{HTTP:SEF_REQUES} ^true$ [NC]
RewriteRule . - [L]
编辑:我再次阅读 htaccess 并发现我不明白但它可能有一些联系。它位于文件的底部。
# lowercase the hostname, and set the TLD name to an enviroment variable
RewriteCond ${lowercase:%{SERVER_NAME}|NONE} ^(.+)$
RewriteCond %1 ^[a-z0-9.-]*?[.]{0,1}([a-z0-9-]*?\.[a-z.]{2,6})$
RewriteRule .? - [E=TLDName:%1]