【发布时间】:2013-08-26 16:22:03
【问题描述】:
我面临的问题与 CakePHP 有关,我将在该上下文中解释它,但它确实是一个 mod_rewrite 问题:
在 CakePHP 中,所有请求都被路由到 /app/webroot 目录。在该目录中,我有另一个名为assets 的目录,其中存储了所有用户上传的文件。我现在希望能够为该文件夹中的每个图像提供缩略图,并且我想自动生成它们,然后在第一个请求时缓存它们。
为此,我在assets 目录中有一个.htaccess 文件,它应该将所有以thumbs/ 开头的请求路由到PHPThumb 脚本。现在我可以简单地将所述脚本放入assets 目录中,一切都会正常工作。但是:
- 我想避免文件膨胀(因为可能有多个分辨率缩略图等),因此我更愿意将这些缩略图存储在
/app/tmp目录中, - 整个东西是我正在开发的 CakePHP 插件的一部分,所以如果脚本可以留在插件的文件夹中就更好了。
我尝试过的(在/app/webroot/assets 目录中):
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^thumbs\/([^\/]*)\/(.*)$ ../../Plugin/MyPlugin/Lib/thumbnail.php?size=$1&path=$2 [QSA,L,S=2]
现在这不起作用。问题是/app 和/app/webroot 中的.htaccess 文件将所有内容路由到/app/webroot/index.php(或webroot 中的任何物理文件)。 S 标志似乎只适用于同一文件中的规则。
我显然可以更改这些文件以允许 thumbnail.php,但正如我所说,它是插件的一部分,我希望尽可能保持它的配置少。
所以我的问题是:在应用/app/webroot/assets/.htaccess 中的规则之后,有没有办法绕过/禁用任何其他重写规则?
【问题讨论】:
标签: php .htaccess cakephp mod-rewrite