项目迁移URL解决方案

此文章是 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 路径也须要加上项目路径前缀,防止项目迁移 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

相关文章
相关标签/搜索