專案遷移URL解決方案
此文章是 Rain/doc/前後端開發約定 中 -專案遷移解決方案- 獨立通用版本。用於避免和解決專案遷移目錄時大量的路徑修改工作,並提醒新員工別在專案開始時就踩坑。
考慮如下場景:
<!-- 首頁程式碼 -->
您好,請<a href="/login/">登入</a>
專案是一個部落格系統,域名是 http://www.domain.com
登入地址是 http://www.domian.com/login/
。
上線後需求方要求將部落格遷移至 http://www.domain.com/blog/
。
遷移後訪問頁面,點選登入(/login/)
。開啟 /login/
頁面後出現404。因為部落格的登入頁面變成了 /blog/login/
,而頁面中的連結沒有修改。
此時需要將所有頁面中的 URL 都加上 /blog/
字首才可以確保所有 URL 正確,/login/
改為 /blog/login/
等。
當專案遷移至子目錄時,因為 URL 字首固定導致所有頁面需要同時修改。我們通過字首變數的方式解決這個問題。
PHP程式碼修改如下
define("APP_PATH","/");
您好,請<a href="<?php echo APP_PATH ?>login/">登入</a>
渲染結果:您好,請<a href="/login/">登入</a>
此處是原生 PHP 渲染頁面示例,不同後端框架渲染頁面方式不同。大致都是定義一個常量,每個 URL 都加上此常量。
使用此方案後,可通過修改常量完成所有頁面 URL 的遷移。
define("APP_PATH","/blog/");
您好,請<a href="<?php echo APP_PATH ?>login/">登入</a>
渲染結果:您好,請<a href="/blog/login/">登入</a>
前端注意 AJAX 路徑的配置
AJAX 路徑也需要加上專案路徑字首,防止專案遷移 AJAX 路徑錯誤。參考如下示例:
<script>
var APP_PATH = "<?php echo APP_PATH ?>";
// 渲染結果:
var APP_PATH = "/";
</script>
<script>
$.get(APP_PATH + 'url/', function () {
// ...
})
</script>
訪問Github原文進行討論:https://github.com/nimojs/blog/issues/11
相關文章
- antd+react專案遷移vite的解決方案ReactVite
- 從Windows到Mac遷移Android專案出現錯誤解決方案WindowsMacAndroid
- 摩杜雲遷移全週期解決方案:助力企業加速遷移
- 專案遷移的思考
- vue 專案白屏解決方案Vue
- 專案更新迭代解決方案
- 100爬蟲專案遷移爬蟲
- 個人專案管理軟體解決方案專案管理
- 大批次檔案遷移解決方案
- Codable 的遷移方案
- 儲存遷移方案
- MSSQL Server 遷移至 ORACLE解決方案SQLServerOracle
- 專案遷移 寶塔 No input file specified
- AS3.0-老專案遷移若干坑S3
- 遷移HTML5移動專案到PhoneGapHTML
- Fastdfs資料遷移方案AST
- Mysql for nagios 遷移方案MySqliOS
- 資料庫遷移方案資料庫
- 遷移Qt專案的路徑問題QT
- 阿里雲NAS檔案遷移專案實踐阿里
- 部隊自建私有云盤專案解決方案
- vue小程式專案 pdf下載解決方案Vue
- 攜程內部海量CRN專案解決方案
- web專案顯示亂碼解決方案整理Web
- You do not have permission to get URL ‘/’ from this server解決方案Server
- 電信行業專案管理解決方案(常見挑戰&解決方案)行業專案管理
- 使用bulkCollect解決資料遷移問題
- Laravel5.5執行表遷移命令出現表為空的解決方案Laravel
- 點晴移動OA解決方案
- mysql 大表mysqldump遷移方案MySql
- 資料遷移方案選擇
- 一鍵生成dotnet5專案解決方案
- 舊專案 TypeScript 改造問題與解決方案記TypeScript
- 多專案管理中的難題及解決方案專案管理
- 爬蟲專案常見問題及解決方案爬蟲
- “專案檔案已被重新命名或已不在解決方案中”的解決辦法
- 跨越異構鴻溝,Redis 遷移同步過程中的挑戰與解決方案Redis
- EF Core 遷移過程遇到EF Core tools version版本不相符的解決方案