Apache mod_rewrite规则和永远循环

时间:2014-11-27 14:02:42

标签: apache .htaccess mod-rewrite

我需要将所有以“t”开头的文件从一个目录重写到另一个目录。

/gallery/tXYZ.ext/gallery/thumbnails/thumbs_XYZ.ext

我对此RewriteRule有疑问:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^gallery/t(.*)$  /gallery/thumbs/thumbs_$1 [R=301,NC,L]

因为它再次捕获thumbs目录(以“t”开头)并且永远循环发生。

1 个答案:

答案 0 :(得分:1)

问题是单词thumbs也匹配t*模式并导致重定向循环。

使用此规则修复它:

RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_URI} !^/gallery/thumbs/ [NC]
RewriteRule ^gallery/t(.*)$ /gallery/thumbs/thumbs_$1 [R=301,NC,L]

或者其他:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^gallery/t(?!humbs/)(.*)$ /gallery/thumbs/thumbs_$1 [R=301,NC,L]