3

我试图让 Matt Wilcox 自适应图像与 CakePHP 一起工作但没有成功。 http://adaptive-images.com/

CakePHP 带有三个它自己的 .htaccess 文件。一//app/一进/app/webroot/

我需要让这四个文件一起工作,以便将图像请求发送到我放在根目录中的文件adaptive-images.php。

这是来自自适应图像的 htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Adaptive-Images -----------------------------------------------------------------------------------

    # Add any directories you wish to omit from the Adaptive-Images process on a new line, as follows:
    # RewriteCond %{REQUEST_URI} !some-directory
    # RewriteCond %{REQUEST_URI} !another-directory

    RewriteCond %{REQUEST_URI} !assets

    # Send any GIF, JPG, or PNG request that IS NOT stored inside one of the above directories
    # to adaptive-images.php so we can select appropriately sized versions
    RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php

    # END Adaptive-Images -------------------------------------------------------------------------------
</IfModule>

这是来自根目录的蛋糕 htaccess /

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

这是来自 /app/ 的蛋糕 htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

这是来自 /app/webroot 的蛋糕 htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

我假设来自自适应图像的规则必须首先出现在其中一个文件中,并可能为最后一条规则添加一个 [L] 或其他内容。但到目前为止,我唯一能做到的就是破坏图像的路径,/img/myimage.gif以便 Cake 开始寻找 ImgController。

Apache 日志没有给我任何有价值的东西。

有什么建议么?

编辑:目前看起来像这样

我修改后的/- htaccess 现在如下所示。Cake 给了我一个关于缺少 ImgController 的错误,并且没有在自适应图像应该放入的 ai-cache-folder 中创建图像。

<IfModule mod_rewrite.c>
   Options +FollowSymlinks
   RewriteEngine on

    RewriteCond %{REQUEST_URI} !assets
    RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php

   RewriteCond %{REQUEST_URI} !adaptive-images\.php [NC]
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>
4

1 回答 1

0

好吧,即使它可能不是最优化的解决方案,我也让它工作了。

我只更改了/app/webroot-folder 中的 htaccess,如下所示

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    RewriteCond %{REQUEST_URI} !debug_kit
    RewriteRule \.(?:jpe?g|gif|png)$ adaptive-images.php [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

并将adaptive-images.php 文件添加到app/webrootVendor 目录中的adaptive-images.php 文件可能会更好,但至少它可以工作。

我在adaptive-images.php中做了两个改变

$cache_path    = "app/tmp/cache/ai-cache";
$source_file    = $document_root.'/app/webroot'.$requested_uri;
于 2013-03-04T09:15:13.777 回答