1

URLの「portfolio」という単語を「portfolio/project」に変更しようとしていますが、誤ってリダイレクトループが作成されました。私を正しい方向に向ける手助けをいただければ幸いです。

例:

http://www.example.com/portfolio/interactive/abc/ to

http://www.example.com/portfolio/project/interactive/abc/

現在のhtaccess(最後の2行は問題に関連しています):

redirect 301 "/sitemap.xml" http://www.example.com/sitemap.php

RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/sitemap.php
RewriteRule ^(.*)$ /index.php/$1 [L]

RewriteCond %{REQUEST_URI} /.*portfolio.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]
4

1 に答える 1

1

問題は、正規表現もターゲットと一致するため、リダイレクト後、URIが同じルールに一致し、再度リダイレクトされることです(/project/project/project/project/project/project/projectURIに大量の情報があることに気付いたかもしれません)

除外条件を追加します。

RewriteCond %{REQUEST_URI} !portfolio/project
RewriteCond %{REQUEST_URI} /.*portfolio.*$ [NC]
RewriteRule ^(.*)portfolio(.*)$ /$1portfolio/project$2 [R=301,L]
于 2012-09-26T04:34:53.497 に答える