我如何路由到app/webroot文件夹?(CakePHP)


How could I routing to the app/webroot folder? (CakePHP)

如果我在浏览器中输入:"http://examplepage.com/gallery/examplecagegory/1-test-picture.jpg"

进入web浏览器:"应用程序/webroot/画廊/图片/1. jpg"

我试着:

Router::connect('/gallery/:slug_category/:id-:slug.:extension',
                array('webroot/gallery/pictures'),
                array(
                    'pass' => array('id', 'slug'),
                    'id' => '[0-9]+'
                    )
                );

但是我卡在第二行…: -/

这不是路由可以做到的,正如书上所说:

路由是一个将url映射到控制器动作的特性。

图像资源不是控制器操作。您应该在app/webroot的.htaccess文件中使用一个普通的RewriteRule来重写所有调用。像这样的代码应该可以达到这个效果:

RewriteRule ^gallery/[a-z]+/([0-9]+)-[a-z-]+'.([a-z]{3})$ /gallery/pictures/$1.$2

请注意HtmlHelper在默认情况下会在app/webroot/images文件夹中搜索图像,因此您需要使用绝对url(在所有图像调用前加上斜杠)来使用您重写的路径,例如这将不起作用:

$this->Html->image('gallery/examplecategory/1-test-picture.jpg');

你应该用这个代替:

$this->Html->image('/gallery/examplecategory/1-test-picture.jpg');