Laravel 4.2中未触发路由



我在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]

相关内容

  • 没有找到相关文章

最新更新