.htaccess - htaccess 仅在文件不存在时重写

标签 .htaccess mod-rewrite

使用 .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/

相关文章:

php - 通过 Apache .conf 文件忽略一个子目录中的 .htaccess 文件和规则

apache - url重写mod_rewrite

apache - mod_rewrite - 强制重定向到重写的 URL

php - 使用 .htaccess 设置位于同一文件夹中的 404 错误文档

.htaccess - htaccess 与虚拟主机不工作

.htaccess 文件在 go daddy 服务器上不起作用

wordpress - 使用 .htaccess 将帖子从一个类别重定向到新的 URL

php - 使用 mod_rewrite 删除 .php 扩展并同时清理 GET url

php - 从 Lumen/Laravel 中的路由中删除 index.php

.htaccess - 使用 htaccess 查询字符串重定向