正在使用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進行重定向。
想知道,如果想將靜態資源路徑和路由命名如上所示進行統一,該怎麼去設定。或者說有沒有其他更好的命名方案。
可以透過修改public/.htaccess來實現(Linux Mint下LAMP本地測試通過)
步驟
修改public目錄下的.htaccess檔案
定位到:
原本意思是:如果不是目錄!-d、也不是檔案!-f,那就解析到index.php
修改為
現在表示:如果不是文件!-f,那麼解析到index.php
(從某種意義上!-d已經沒用了)
本地測試通過,是否會帶來其他問題暫時未知。