zoukankan      html  css  js  c++  java
  • phpcms修改域名(linux+nginx环境)

    以下操作是针对phpcms修改域名存在两个问题:

    1、数据库中保存着旧域名

    2、缓存文件保存着旧域名

    以上问题会导致图片/文件无法显示、页面跳转到旧地址的问题。

    下面是解决的方式(适用于linux+nginx环境)

    1、用nginx命令,修改各个文件中的域名

    sed -i "s/旧域名/新域名/g" 项目根目录/index.html;
    sed -i "s/旧域名/新域名/g" 项目根目录/caches/configs/system.php;
    sed -i "s/旧域名/新域名/g" 项目根目录/caches/caches_commons/caches_data/category_content_1.cache.php;
    sed -i "s/旧域名/新域名/g" 项目根目录/caches/caches_commons/caches_data/position.cache.php;
    sed -i "s/旧域名/新域名/g" 项目根目录/caches/caches_commons/caches_data/sitelist.cache.php;
    sed -i "s/旧域名/新域名/g" 项目根目录/phpsso_server/caches/caches_admin/caches_data/applist.cache.php;
    sed -i "s/旧域名/新域名/g" 项目根目录/phpsso_server/caches/configs/system.php;

    以上是我找到的有域名缓存的文件。

    sed -i 是linux命令,用于替换文件中的字符串,/g是指全局替换。每一句后面加上分号就可以一起执行。

    注意,替换时,新旧域名最好不要加上http://前缀,避免有的文件写的是"http:\/\/"的格式,就替换不到了

    2、修改数据库配置

    (改域名往往也意味着迁移数据库,因此数据库的配置也要相应改变)

    打开项目目录中的“/caches/configs/database.php”,修改数据库名、账号、密码,即可。

     3、替换数据库中的域名地址

    UPDATE `数据库名`.`kaidu_v9_category` set `url`=replace(`url`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_download` set `thumb`=replace(`thumb`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_download` set `url`=replace(`url`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_download_data` set `content`=replace(`content`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_download_data` set `bgImage`=replace(`bgImage`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_news` set `thumb`=replace(`thumb`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_news` set `url`=replace(`url`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_news_data` set `content`=replace(`content`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_page` set `content`=replace(`content`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture` set `thumb`=replace(`thumb`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture` set `url`=replace(`url`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture` set `description`=replace(`description`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture_data` set `content`=replace(`content`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture_data` set `pictureurls`=replace(`pictureurls`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_picture_data` set `overview`=replace(`overview`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_position` set `thumb`=replace(`thumb`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_position_data` set `data`=replace(`data`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_poster` set `setting`=replace(`setting`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_site` set `domain`=replace(`domain`, '旧域名', '新域名');
    UPDATE `数据库名`.`kaidu_v9_sso_applications` set `url`=replace(`url`, '旧域名', '新域名');

    这是用了sql语句:UPDATE `数据库名`.`表名` set `字段`=replace(`字段`, '', '');

    可以替换指定表中的指定字段的指定文本。

    4、【修改host文件】并【重启nginx】

    server {
        listen 80;
        server_name www.domain.com;
        access_log /data/wwwlogs/access_nginx.log combined;
        root /data/wwwroot/www.domain.com;
        index index.html index.htm index.php;
        #error_page 404 /404.html;
        #error_page 502 /502.html;
        location /nginx_status {
          stub_status on;
          access_log off;
          allow 127.0.0.1;
          deny all;
        }
        location ~ [^/]\.php(/|$) {
          #fastcgi_pass remote_php_ip:9000;
          fastcgi_pass unix:/dev/shm/php-cgi.sock;
          fastcgi_index index.php;
          include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
          expires 30d;
          access_log off;
        }
        location ~ .*\.(js|css)?$ {
          expires 7d;
          access_log off;
        }
        location ~ ^/(\.user.ini|\.ht|\.git|\.svn|\.project|LICENSE|README.md) {
          deny all;
        }
      }
    View Code

    重启nginx(重启了host才会生效)

    /usr/local/nginx/sbin/nginx -s reload

    至此,域名更换就完成了

    以上亲测有效~解决phpcms更换域名的问题。

  • 相关阅读:
    ASP.NET2.0服务器控件之自定义状态管理
    sql中RIGHT和LEFT(小技巧)
    微软云计算的思考
    枚举转化和判断方法的总结
    sql中的split(小技巧)
    ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI
    浅析值类型与引用类型的内存分配
    ASP.Net Web Page深入探讨
    const和static readonly 区别
    程序中一种用in的sql防注入的方法(小技巧)
  • 原文地址:https://www.cnblogs.com/mankii/p/15565742.html
Copyright © 2011-2022 走看看