前端 - 使用laravel進行開發時遇到的路由問題
大家讲道理
大家讲道理 2017-05-16 16:50:56
0
1
578

正在使用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進行重定向。

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

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(1)
仅有的幸福

可以透過修改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已經沒用了)

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板