搜尋

首頁  >  問答  >  主體

前端 - 使用laravel進行開發時遇到的路由問題

正在使用laravel進行開發,專案中的靜態資源目錄與路由會出現同名,例如:

//web的静态资源路径
/public/web/xxx     

//定义的路由
Route::group(['prefix' => 'web'], function () {
    Route::get('/', 'XxxController@indexPage');
});

如果這樣設定的話,在開發環境使用php內建伺服器存取 localhost:8000/web 會出現404錯誤:

The requested resource /web_dealer was not found on this server.

研究了一下,應該是因為public目錄下有同名的資源路徑,所以伺服器沒走路由,直接當靜態資源進行處理。但實際上這個web只是一個資料夾,所以才會出現上面的404。

使用apche伺服器進行測試,apache似乎會把localhost:8000/web重定向(301)到localhost:8000/web/,頁面上會暴露目錄結構。設定options -Indexes來只是禁止展現,依舊會對localhost:8000/web進行重定向。

想知道,如果想將靜態資源路徑和路由命名如上所示進行統一,該怎麼去設定。或者說有沒有其他更好的命名方案。

大家讲道理大家讲道理2797 天前608

全部回覆(1)我來回復

  • 仅有的幸福

    仅有的幸福2017-05-16 16:52:56

    可以透過修改public/.htaccess來實現(Linux Mint下LAMP本地測試通過)

    步驟
    修改public目錄下的.htaccess檔案

    定位到:

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

    原本意思是:如果不是目錄!-d、也不是檔案!-f,那就解析到index.php

    修改為

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

    現在表示:如果不是文件!-f,那麼解析到index.php
    (從某種意義上!-d已經沒用了)

    本地測試通過,是否會帶來其他問題暫時未知。

    回覆
    0
  • 取消回覆