路线未在Laravel 4.2中触发

时间:2015-11-24 15:50:58

标签: php laravel laravel-4.2 thephpleague

我在example.com/img/有一个包含图片的文件夹,同时我有一条路线

get('img/{path}', 'ImageController@output');

但是当我尝试去example.com/img/someimagepath并且如果图像名称是someimagepath时,我得到的是图像而不是上面的射击路线。

有没有办法让它成为消防路线而不是请求文件?

确切地说,我正在使用https://github.com/thephpleague/glide Glide库

1 个答案:

答案 0 :(得分:4)

这是因为服务器正在查看public文件夹,查找img目录,并从那里提供图像而不是加载public/index.php。如果未加载index.php,则不会加载laravel,因此路线不会起作用。

重命名公共目录中的文件夹,或重命名路线。你不能让它们都引用img

我保持目录相同,并重命名您的路线:

get('images/{path}', 'ImageController@output');
如果您真的希望img作为细分受众群,请输入

或者为您的路线添加前缀:

get('app/img/{path}', 'ImageController@output');

基本上,您的路线无法跟随public中的任何路径层次结构。服务器知道加载laravel的方式是,如果它无法在public中找到与URI匹配的目录或文件,则会加载index.php。如果它确实找到了与URI匹配的目录或文件路径,那么它将替代它。

来自public\.htaccess。基本上说如果请求与文件或目录不匹配,请加载index.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]