重写规则 - 将动态URL重定向到没有循环的子目录

时间:2013-06-14 16:28:37

标签: loops mod-rewrite redirect subdirectory

我有这些可能的图像路径:

/media/thumbnail/img.jpg

/media/thumbnail/product/img.jpg

/media/thumbnail/product/some-text/img.jpg

所有必须重定向到:
/media/thumbnail/uploads/img.jpg

我试过了:

RewriteCond %{REQUEST_FILENAME} \.(png|jpg|jpeg|gif)$
RewriteRule ^/media/(.*)/(.*)$ /media/$1/uploads/$2 [L,R]

但由于循环导致加载页面出错,所以如果路径包含名为uploads的文件夹,我需要停止。

修改
还有另一个问题,我要求的规则必须适用于这个:

RewriteCond%{REQUEST_FILENAME}。(png | jpg | jpeg | gif)$
RewriteRule ^(。*)$ uploads / $ 1 [L,NC,QSA]

将/img.jpg重定向到/upoloads/img.jpg

提前致谢

1 个答案:

答案 0 :(得分:0)

.htaccess中的RewriteRule与前导斜杠不匹配。

更改您的代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^./]+\.(?:png|jpe?g|gif)$ /uploads%{REQUEST_URI} [L,NC]

RewriteCond %{REQUEST_FILENAME} /(?=[^/]*$)([^.]+\.(?:png|jpe?g|gif))$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^media/([^/]+)/(.*)$ /media/$1/uploads/%1 [L,R]