【问题标题】:Route not triggering in Laravel 4.2Laravel 4.2 中没有触发路由
【发布时间】:2016-02-27 03:45:33
【问题描述】:

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

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

但是当我尝试去example.com/img/someimagepath 并且如果图像名称是someimagepath 我得到那个图像而不是上面的触发路线。

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

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

【问题讨论】:

  • 这是因为您的 Web 服务器将采用现有路径而不是虚拟路径。让我们知道您使用什么服务器软件并向我们展示您的配置,以便我们进一步为您提供帮助。
  • 我认为正在发生的事情是服务器配置具有检查文件是否存在的指令,如果存在则传递该文件,否则它会调用框架。
  • 下面的答案解决了吗?

标签: php laravel laravel-4.2 thephpleague


【解决方案1】:

这是因为服务器正在查找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]

【讨论】:

  • 是的,这行得通,但它引导我进入下一个问题。现在我收到一个错误NotReadableException in Decoder.php line 21: Unable to read image from file (/tmp/random).
  • 这听起来更像是一个新问题。您的图像库显然将处理后的图像存储在该文件中,并且无法访问它们。我认为你需要一个新问题。
猜你喜欢
  • 2015-04-12
  • 2016-01-06
  • 2019-01-13
  • 2023-03-17
  • 2013-09-12
  • 2016-01-21
  • 2020-12-12
  • 2016-06-26
  • 1970-01-01
相关资源
最近更新 更多