仅当文件不存在时才重写htaccess

时间:2013-03-03 05:29:37

标签: .htaccess mod-rewrite

使用.htaccess mod重写,我想重写一个url,检查该文件是否存在,如果没有使用在第一次重写期间删除的原始url的一部分再次重写到另一个url。

例如,如果原始网址是

/images/3001/zebra.jpg

我想检查文件是否存在/images/cached/zebra.jpg并且如果确实存在则提供服务。

如果没有,我想重写为/image.php?id=3001

非常感谢, 菲尔

1 个答案:

答案 0 :(得分:3)

在文档根目录中的htaccess文件中,在您可能已有的规则之前添加这些规则:

RewriteEngine On

# cached copy exists
RewriteCond %{REQUEST_URI} ^/images/[0-9]+/(.+)$
RewriteCond %{DOCUMENT_ROOT}/images/cached/%1 -f
RewriteRule ^ /images/cached/%1 [L]

# cached copy doesn't exist
RewriteCond %{REQUEST_URI} ^/images/([0-9]+)/(.+)$
RewriteCond %{DOCUMENT_ROOT}/images/cached/%2 !-f
RewriteRule ^ /image.php?id=%1 [L]