自适应图像CakePHP htaccess

时间:2013-02-27 06:50:41

标签: .htaccess cakephp-2.0

我正在努力让Matt Wilcox自适应图像与CakePHP一起使用而没有成功。 http://adaptive-images.com/

CakePHP附带了三个.htaccess文件。在/中,/app/中有一个,/app/webroot/中有一个

我需要让这四个文件一起工作,以便将图像请求发送到我放在根目录中的文件adaptive-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>

这是来自root /

的蛋糕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>

1 个答案:

答案 0 :(得分:0)

好吧,即使它可能不是最佳解决方案,我也能使用它。

我只更改了/app/webroot - 文件夹中的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 -pid.php文件添加到app/webroot。在Vendor目录中有自适应images.php文件可能更好,但至少它可以工作。

我在adaptive-images.php中做了两处修改

$cache_path    = "app/tmp/cache/ai-cache";
$source_file    = $document_root.'/app/webroot'.$requested_uri;