具有可伸缩段长度的laravel路由

时间:2017-11-07 03:37:29

标签: php laravel url routes apache2

我想只允许特权用户下载一些特殊文件。

所以我在下面配置了apache2,这使得/data/model/userModel无法直接访问。

Alias /user_model "/data/model/userModel"
<Directory /data/model/userModel>
            Order allow,deny
            Deny from all
</Directory>

虽然/data/model/userModel可能包含子文件夹,例如

  • /data/model/userModel/pic/tiny/aaa.png
  • /data/model/userModel/txt/aaa.txt
  • /data/model/userModel/model/0/13/aaa.zip

此路径仅用于文件下载,在控制器方法中我只是检查用户是否有权下载文件。所以我尝试只使用一条路线进行这些修补。例如,

Route::get('user_model/*', 'ModelController@user_model');

虽然不起作用。路线中的*只能匹配网址的一个网段。

如何使用可伸缩段长度创建一个路由匹配URL。 我不知道我的路线设计是否合适。

1 个答案:

答案 0 :(得分:2)

How do I make a Catch-All Route in Laravel 5.2Nathan Heffley的评论中引用,我解决了这个问题。

使用Route::get('user_model/{path}', 'ModelController@user_model')->where('path', '.*');代替Route::get('user_model/*', 'ModelController@user_model');

注意:

    {li>

    *Route::get('user_model/*', 'ModelController@user_model');只能匹配一个细分受众群。

    {li>

    * Route::get('user_model/{path}', 'ModelController@user_model')->where('path', '.*');可以匹配多个细分受众群。