簡體   English   中英

如何在Laravel中提供多個靜態文件夾?

[英]How to serve multiple static folders in Laravel?

我有三個帶靜態文件的文件夾(Angular apps):web,login,admin。

我想服務:

  • URL為/*時的web文件夾
  • login時,URL是/admin/*和未登錄
  • admin/admin/*並記錄時為/admin/*

我的routes.php

// admin folder
    Route::get('/admin', ['before' => 'auth', function()
    {
        return File::get(public_path() . '/admin/index.html');
    }]);

    Route::get('/admin/{slug}', ['before' => 'auth', function($slug)
    {
        return File::get(public_path() . '/admin/' . $slug);
    }]);


    //login folder
    Route::get('/admin', function()
    {
        return File::get(public_path() . '/login/index.html');
    });

    Route::get('/admin/{slug}', function($slug)
    {
        return File::get(public_path() . '/login/' . $slug);
    });


    // web folder
    Route::get('/', function()
    {
        return File::get(public_path() . '/web/index.html');
    });

    Route::get('/{slug}', function($slug)
    {
        return File::get(public_path() . '/web/' . $slug);
    });

問題:

  • /{slug}不提供子文件夾中的文件。
  • 當我沒有登錄時, /admin/將我重定向到/login
  • 必須有辦法用正則表達式編寫此路由。

我怎樣才能解決以前的問題?

  • 不知道你的第一點是什么問題。 可能的問題:
    • 您輸入一個擴展名為slug,例如slug.html。 在這種情況下,標准的laravel htaccess會嘗試搜索不存在的文件。 所以laravel沒有啟動! 要解決此問題,您可以更改htaccess或不使用路由中的擴展名。
  • 您添加了相同的路由網址2次。 Laravel標准采用一個並跳過另一個。 因此,采用第一個管理路由。 因此,auth過濾器始終有效。 在標准過濾器(位於filters.php文件中)中,未登錄的用戶被重定向到登錄。 因此,您被重定向到登錄。 你可以通過改變過濾器或刪除過濾器來解決這個問題,並在你的路線中使用它:

     Route::get('/admin',function() { if(Auth::check()) return File::get(public_path() . '/admin/index.html'); return File::get(public_path() . '/login/index.html'); }); Route::get('/admin/{slug}',function($slug) { if(Auth::check()) return File::get(public_path() . '/admin/' . $slug); return File::get(public_path() . '/login/' . $slug); }); 
  • 你可以在這里閱讀你可以使用正則表達式。 例如->where('slug', '[A-Za-z]+');

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM