我在example.com/img/
有一个文件夹,里面有图像,同时我有一个路由
get('img/{path}', 'ImageController@output');
但当我尝试转到example.com/img/someimagepath
时,如果图像名称为someimagepath
,我会得到该图像,而不是上面的发射路线。
有没有一种方法可以让它通过fire route而不是请求文件?
准确地说,我使用https://github.com/thephpleague/glide滑翔库
这是因为服务器正在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]