iT邦幫忙

1

laravel Route設定成層級的樣式xxx/xxx/xxx後js和css的路徑會跟著改變

Laravel 7.x

舉例子1

--route--

Route::get('table', function () {
    return view("table_6");
});

--view--
<link rel="stylesheet" href="public/css/site.css">

--運行後結果正常--
http://127.0.0.1/myroot/public/css/site.css

舉例子2

--route--

Route::get('table/abx/6', function () {
    return view("table_6");
});

--view--
<link rel="stylesheet" href="public/css/site.css">

--運行後結果路徑被添加table/abx/--
http://127.0.0.1/myroot/table/abx/public/css/site.css

顯然laravel會把table/abx/當作資料夾路徑,想問是否有方法禁用它,謝謝了。

淺水員 iT邦高手 3 級 ‧ 2020-05-18 09:41:39 檢舉
這跟 laravel 無關,只是相對路徑的寫法本來就是這樣。
如果改成 "/public/css/site.css" 就會是 「網站根目錄/public/css/site.css」了

2 個回答

2
Franky Chen
iT邦研究生 3 級 ‧ 2020-05-18 09:55:34

解一:用網站根目錄
<link rel="stylesheet" href="public/css/site.css">

<link rel="stylesheet" href="/public/css/site.css">

解二:丟到CDN server
<link rel="stylesheet" href="https://cdn.example.com/public/css/site.css">

解三:加網址
<link rel="stylesheet" href="https://example.com/public/css/site.css">

2

這不是 laravel 的問題。你採用相對路徑的用去就會這樣子處理沒錯。

一般我js或css相關,在laravel,都會用如下處理

<script type="text/javascript" src="{{asset('./js/theme.js')}}"></script>

而在一般html頁上
則會用指定式根目錄處理

<script type="text/javascript" src="/js/theme.js"></script>

這樣我就比較單純多。不用去處理相對路徑的問題。

我要發表回答

立即登入回答