iT邦幫忙

0

Laravel subdomain的問題處理方法

最近用Laravel + js框架部屬在學校的Linux apache的子網域

但因為Laravel + js框架使用的是設定好的mix方式打包,在路徑改變導致了不少麻煩
在這邊紀錄一下遇到的問題以及自己的解決辦法:

1. server找不到首頁

通常子使用者的home底下會有public_html資料夾
把專案複製貼在home後,把public裡的東西全部複製到public_html裡面
(或是改伺服器預設的位置,不過學校的伺服器不方便我做更改)
網頁的網址會在

網域名/~子使用者名稱/index.php

2. The stream or file "/home/子使用者/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

解決辦法可以參考這篇
能使用775就用775,777比較危險。

3. 找不到app.js ( /js/app.js is not found 404 )。

將 resources/views/index.blade.php 中的

<script src="{{ mix('js/app.js') }}"></script>

改成

<script src="{{ asset(mix('/js/app.js')) }}"></script>

4. 使用 ajax/fetch/axios 的時候url失效。

因為使用subdomain,Laravel提供api的url也會跟著改變,但Js的local仍然是沒有加入子網域的路徑
假設原本的路徑為

/api/get/data

上面的路徑會回傳404,必須改成下面這樣,要加入首頁的路徑:

 /~子使用者名稱/index.php/api/get/data

5. 在使用前端router的狀況下,使用href或是location.href無法連結到設定的頁面。

處理方法類似4,比較特別的是如果是使用hashRouter
假設原本的路徑為

/#/home

必須改成下面這樣,注意在index.php的後面是直接加井字號:

/~子使用者名稱/index.php#/home

6. 讀取不到local圖片

這個比較特別,我目前使用的方式是在打包後
直接去public_html資料夾(或是public)修改app.js
CTRL+F搜尋
/images
全部改成
/~子使用者名稱/images
雖然這個方法有效,但我不確定是否有更好的方法。


尚未有邦友留言

立即登入留言