使用 .htaccess mod rewrite,我想重写一个 url,检查该文件是否存在,如果不使用在第一次重写期间删除的原始 url 的一部分再次重写到另一个 url。
例如,如果原始 url 是这个
/images/3001/zebra.jpg
我想检查文件是否存在/images/cached/zebra.jpg 并提供它是否存在。
如果不是,我想重写为/image.php?id=3001
非常感谢,
菲尔
最佳答案
在文档根目录的 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]
关于.htaccess - htaccess 仅在文件不存在时重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15182769/