此文章是 Rain/doc/先後端開發約定 中 -項目遷移解決方案- 獨立通用版本。用於避免和解決項目遷移目錄時大量的路徑修改工做,並提醒新員工別在項目開始時就踩坑。php
考慮以下場景:html
<!-- 首頁代碼 --> 您好,請<a href="/login/">登陸</a>
項目是一個博客系統,域名是 http://www.domain.com
登陸地址是 http://www.domian.com/login/
。前端
上線後需求方要求將博客遷移至 http://www.domain.com/blog/
。git
遷移後訪問頁面,點擊登陸(/login/)
。打開 /login/
頁面後出現404。由於博客的登陸頁面變成了 /blog/login/
,而頁面中的連接沒有修改。github
此時須要將全部頁面中的 URL 都加上 /blog/
前綴才能夠確保全部 URL 正確,/login/
改成 /blog/login/
等。ajax
當項目遷移至子目錄時,由於 URL 前綴固定致使全部頁面須要同時修改。咱們經過前綴變量的方式解決這個問題。後端
PHP代碼修改以下框架
define("APP_PATH","/"); 您好,請<a href="<?php echo APP_PATH ?>login/">登陸</a>
渲染結果:您好,請<a href="/login/">登陸</a>
dom
此處是原生 PHP 渲染頁面示例,不一樣後端框架渲染頁面方式不一樣。大體都是定義一個常量,每一個 URL 都加上此常量。url
使用此方案後,可經過修改常量完成全部頁面 URL 的遷移。
define("APP_PATH","/blog/"); 您好,請<a href="<?php echo APP_PATH ?>login/">登陸</a>
渲染結果:您好,請<a href="/blog/login/">登陸</a>
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