路线未在 Laravel 4.2 内触发

Route not triggering in Laravel 4.2

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

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

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

有没有办法让它触发路由而不是请求文件?

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

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

重命名 public 目录中的文件夹,或重命名您的路线。你不能让它们都引用 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]