为404 Not Found构建htaccess的URL重写规则

时间:2014-09-24 07:23:40

标签: apache .htaccess mod-rewrite url-rewriting http-status-code-404

在找不到请求的文件时,我需要URL重写的帮助来提供默认图像。

我想为3种不同的图片网址格式编写规则:

(1)http://example.com/imgs/user/123-profile.jpg

(2)http://example.com/imgs/user/123-profile-987.jpg

(3)http://example.com/imgs/user/123-678.jpg

如果未找到(1)和(2),那么" http://example.com/imgs/user/default-user.jpg"应该送达;如果找不到(3)那么" http://example.com/imgs/user/default-post.jpg"应该送达。

我在" ... / imgs / user / .htaccess"中尝试了以下代码文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)imgs/user/([0-9]*)[-profile]([0-9]*).jpg$ /imgs/user/default-user.jpg [L]
RewriteRule ^(.*)imgs/user/([0-9]*)[-]([0-9]*).jpg$ /imgs/user/default-post.jpg [L]

请告诉我 - 我应该将代码放在.htaccess的#34; /" (文档根目录)或更优选当前路径。

1 个答案:

答案 0 :(得分:0)

你的正则表达式看起来不对,两条规则都需要RewriteCond

您可以这样使用代码:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*?imgs/user/\d+-profile[^.]*\.jpe?g$ /imgs/user/default-user.jpg [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*?imgs/user/\d+-\d+.jpe?g$ /imgs/user/default-post.jpg [L,NC]