1

我正在尝试将我的 URL 中的“portfolio”一词更改为“portfolio/project”,并无意中创建了一个重定向循环。将不胜感激任何帮助指出我正确的方向。

例子:

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

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

当前的 htaccess(最后两行与问题有关):

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 匹配相同的规则并再次被重定向(您可能已经注意到 URI 中有一堆/project/project/project/project/project/project/project

添加排除条件:

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