zoukankan      html  css  js  c++  java
  • 项目迁移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

  • 相关阅读:
    Java排序算法总结(转载)
    Java基础—数组(转载)
    Java基础—注解(转载)
    Java基础—枚举
    JVM虚拟机—JVM的类加载机制
    三,memcached服务的两种访问方式
    二,windows下安装memcached服务
    一,memcached的基本概念
    七,apache配置域名
    六,apache修改默认根文件路径
  • 原文地址:https://www.cnblogs.com/nimojs/p/4396846.html
Copyright © 2011-2022 走看看