我在example.com/img/
有一个包含图片的文件夹,同时我有一条路线
get('img/{path}', 'ImageController@output');
但是当我尝试去example.com/img/someimagepath
并且如果图像名称是someimagepath
时,我得到的是图像而不是上面的射击路线。
有没有办法让它成为消防路线而不是请求文件?
确切地说,我正在使用https://github.com/thephpleague/glide Glide库
答案 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]