2

If I type this: "http://examplepage.com/gallery/examplecagegory/1-test-picture.jpg" to the browser.

Go to webroot: "app/webroot/gallery/pictures/1.jpg"

I tried:

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

But I stucked in the second row... :-/

4

1 回答 1

5

正如书中所述,这不是您可以通过路由执行的操作:

路由是一种将 URL 映射到控制器操作的功能。

图像资源不是控制器动作。您应该只使用 .htaccess 文件中的普通 RewriteRuleapp/webroot来重写所有调用。这样的事情应该可以解决问题:

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');
于 2013-04-27T19:45:29.447 回答