修正しようとしている Web サイトの 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 にリダイレクトされるように、誰かがこれを理解し、修正する方法を見つけてくれますか?
私はかなり長い間オンラインで検索してきましたが、解決策が見つからないように見えるので、ここに投稿する時が来たのではないかと考えました. 「Mastering Regular Expressions」を読んでいますが、探している答えを見つけるのに時間がかかる場合があります。あなたが私に与えることができるどんな助けにも感謝します. ありがとうございました。
編集:これは私が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]