如果我在浏览器中输入:"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');