HTACCESS RewriteCond和RewriteRule分组

时间:2014-10-15 15:44:36

标签: regex .htaccess mod-rewrite url-rewriting

我有一个htaccess文件,它将所有文件重定向到根index.php文件,除非满足某些条件。

如果网站在本地运行,以下代码可以很好地运行,并用于为上传的媒体资产提供占位符图像。这不需要从网站下载所有文件,因此存储库只包含文件。

以下规则匹配的文件如下所示:

[\d]{1,}.(thumbnail|medium|large).[\w]+

我想要做的是匹配中间组并在重定向规则中使用它,但似乎无法使用它:

RewriteCond %{REQUEST_URI} data/applications/.*/media/image/.*/[\d]+\.(.*)\.[\w]+$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ data/applications/app/www/img/temp.$1.jpg [L]

原始代码在这里:

RewriteCond %{REQUEST_URI} data/applications/.*/media/image/.*/[\d]+\.thumbnail\.[\w]+$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ data/applications/app/www/img/temp.thumbnail.jpg [L]


RewriteCond %{REQUEST_URI} data/applications/.*/media/image/.*/[\d]+\.medium\.[\w]+$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ data/applications/app/www/img/temp.medium.jpg [L]


RewriteCond %{REQUEST_URI} data/applications/.*/media/image/.*/[\d]+\.large\.[\w]+$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ data/applications/app/www/img/temp.large.jpg [L]

如何将3个单独的匹配合并为一个规则?

1 个答案:

答案 0 :(得分:0)

你可以制定一个单一的规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(data/applications)/.*/media/image/.*/\d+\.([^.]+)\.\w+$ $1/app/www/img/temp.$2.jpg [L]