2013-03-03 56 views
4

使用.htaccess mod重写,我想重写一个url,检查该文件是否存在,如果不是使用部分原始url重新写入另一个url第一次重写。htaccess只有在文件不存在的情况下重写

例如,如果原始URL是这个

/images/3001/zebra.jpg

我想检查文件是否存在/images/cached/zebra.jpg,如果为它服务它确实存在。

而且如果不是我想重写/image.php?id=3001

非常感谢, 菲尔

+0

我不认为'mod_rewrite'是能够这样做的。你的'image.php'脚本应该为你做检查。如果存在,它应该为缓存版本提供服务,否则它应该为原始服务并缓存它。然后,如果您想*伪造URI,请为该脚本创建重写。 – 2013-03-03 07:12:26

+0

感谢您的回复。目前我的php脚本会按照您所描述的方式进行检查,但这意味着调用php来处理请求。我希望如果可能的话,服务器跳过php会更有效率。 – user2128200 2013-03-03 07:33:28

回答

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] 
+0

谢谢乔恩,你刚刚救了我一天。 – codefreak 2015-03-09 12:03:49

相关问题