【问题标题】:Laravel 4.2 : Route is conflict with subfolder name inside public folderLaravel 4.2:路由与公用文件夹中的子文件夹名称冲突
【发布时间】:2015-12-12 11:33:27
【问题描述】:

我在 Laravel 4.2 中遇到了一些问题。详情如下:

我有一个示例路线:

 Route::get('users', function(){return 'some-thing'}); 

并且路由在 http:://localhost:8000/users 仍然正常工作。

但是,当我在公用文件夹中创建一个子文件夹时,它的名称是“用户”。

--public
  --users

该链接无效并返回文件夹索引。我知道这是一个很大的安全问题。

如何解决?你能帮帮我吗?

【问题讨论】:

    标签: php .htaccess laravel-4


    【解决方案1】:

    我不会说一个巨大的安全问题,如果该文件夹中有敏感数据,那么它不应该是“公共”的。您可以拒绝目录列表(假设 Apache virtualhost 或 .htaccess):

    Options -Indexes
    

    与 Laravel(和大多数其他框架)的 .htaccess 文件一样,它仅在文件或目录不存在时使用“路由器”。这是常见的如下图:

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
    

    【讨论】:

    • 我知道它通过 403 禁止错误,但是它仍然没有返回我的用户路线。这就是为什么我说路由与公用文件夹中的子文件夹名称冲突。 (我使用的是 Apache 服务)
    • 正如我在下面解释的那样,这是正常的,因为“用户”存在,所以它不会按照标准 .htaccess 文件使用 Laravel 路由。这就是为什么在 Laravel 中没有指定路由的情况下,css/js/images 都可以正常服务的原因。
    • 嗯,我现在明白了,谢谢你的回答。但是有什么方法可以强制它使用路由,只是进一步的问题。
    • 当然可以通过修改 htaccess 文件,但我认为重新组织文件夹名称并始终将敏感文件保留在公用文件夹之外会更聪明。
    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 2019-05-22
    • 2013-06-27
    • 2012-01-30
    • 2015-02-08
    • 1970-01-01
    • 2016-09-02
    • 2015-10-19
    相关资源
    最近更新 更多