根据404响应代码应用重写规则

时间:2017-09-04 09:47:58

标签: apache .htaccess url-rewriting

我正试图哄骗这个,

if request  hit www.imagesserver.com/public/images/view/3421.png

然后

if response == 404

DO

重定向或重写

www.imagesserver.com/public/images/view/defualt.png

这只适用于此路径public / images / view / * .png,实现此逻辑的最佳方法是什么

2 个答案:

答案 0 :(得分:1)

您可以在public/images/view/.htaccess中使用此规则(如果不存在则创建它):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(?!.+/defualt\.png$).+\.png$ /public/images/view/defualt.png [L,NC,R=307]

答案 1 :(得分:0)

一旦发出404,你就无法真正做到这一点,但你可以事先做到这一点:

RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(jpg|png)$
RewriteRule ^public/images/view/.* /public/images/view/defualt.png [L,R=301]

这将检查所请求的资源是文件还是目录,如果不是则仅应用该规则。

它还确保所请求的资源具有特定的图像扩展名 - 在这种情况下为jpg / png,但您可以根据需要使用明显的模式扩展它。

接下来,只有在/public/images/view/中符合这些条件时才会触发重写规则。

接下来,我将此设置为从缺失的资源发出301重定向到默认图像,以便向客户端清楚地显示图像丢失。

注意:不确定是否有意,但您的默认图片文件名中有拼写错误:defualt.png