在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

迁移网站更改域名后一个可以使用的301跳转方案

IT相关 清风 1015℃ 0评论

背景

最初,由于购买cc域名不支持备案,所以就使用了阿里云香港云空间。自从2016年网站应用由.net应用BlogEngine.NET改为WordPress至今都使用的阿里云香港云空间。稳定倒是挺稳定的,就是一直感觉访问速度比较慢,本以为是阿里云香港云空间本是这样,就没有研究其慢的真实原因,当然这已经是后话了。

今年云空间快要到期的时候,突然想将网站迁移到国内,为了不在备案期间停止域名访问,就更换了域名。当域名更换完成,空间迁移完毕,貌似一切准备就绪,发现原来空间即将到期,留给301跳转的时间非常不足。本想使用阿里云DNS解析进行301跳转,这个也是最优的解决方案,无奈的是域名必须进行备案且是两个域名都必须备案。如果原来的域名也参与备案的话,网站就需要停止访问了,为了避免这种情况,只能放弃使用此方法。

发现

续费原来空间或者购买腾讯云和百度云等在价格上是不划算的。为了保证以最低的代价进行301跳转,就开始找一些低价无需备案的空间来作为中转。经过两天的查找发现一款非常符合预期的服务商,支持多国语言 ,支持不同的支付方式,包括阿里的支付宝,从2006年成立至今已经17年的justhost。发现最经济的一种方式以存储空间使用多少来进行收费的,1兆每天0.001元,也就是说1兆每天1厘,如下图所示:

服务空间套餐选择

使用

首先,注册该网站并充值1.17美元,当时的最低充值金额。随后,订购所选择的服务计划(套餐),等待10分钟左右邮件通知相关信息。以下便是订购的服务,按天来进行续订,按天进行扣费。

计划订购列表

新建一个php文件index.php上传到根目录,其内容如下


<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: 需要301跳转到域名");
exit();
?>

完整示例如下:


<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.mlplus.net");
exit();
?>

完成以上内容后发现一个问题,只有访问首页才会跳转,访问其他页面是没有作用的。为了达到所有请求进行301跳转,需要进行额外的配置重定向。为了完成以上需求,需要在根目录下使用.htaccess配置文件进行,这个文件如果存在就编辑修改,不存在则新建上传。新增具体内容如下:


RewriteEngine On
RewriteRule ^(.*)$ 这里是具体域名/$1 [R=301,L]

完整示例如下:


RewriteEngine On
RewriteRule ^(.*)$ https://www.mlplus.net/$1 [R=301,L]
以上配置属于Apache服务器的配置

经过一段时间的观察,此服务商也比较稳定,每天0.001元,从2023年07月11日至2023年08月31日止,扣费0.06元。

最初扣费详情图
最新扣费详情

日志

使用的此服务是按照占用空间进行计算收费,网站访问产生的日志文件以及访问统计图表也是被计算在其中的。最初发现占用空间升高就手动清理一次,感觉手动清理太过繁琐,就是用程序自动清理一下。基于.net core使用FluentFTP库进行FTP登录清理操作。

空间暂用统计

使用最简单,最暴力的方式完成,不考虑什么设计与性能,以最快的速度实现目的。

实现代码:


using FluentFTP;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace JustHost.Ftp.ClearLog
{
    internal class CrontabFtpClear
    {
        System.Timers.Timer timer;
        List<string> paths = new List<string>() { "/domains/skyfinder.cc/logs/", "/domains/skyfinder.cc/stats/" };
        public CrontabFtpClear()
        {
            timer = new System.Timers.Timer();
            timer.Interval = TimeSpan.FromHours(5).TotalMilliseconds;
            //timer.Interval = TimeSpan.FromSeconds(5).TotalMilliseconds;
            timer.Elapsed += Timer_Elapsed;
            timer.Enabled = true;
            timer.AutoReset = true;
        }

        private void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
        {
            timer.Enabled = false;
            ClearProcess();
        }

        private void ClearProcess(){
            try
            {
                Console.WriteLine($"操作:执行指定清理命令 时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
                // 设置连接信息
                var ftpClient = new FtpClient("这里是服务器IP地址", "这里是用户名", "这里是密码");

                // 连接到FTP服务器
                ftpClient.Connect();
                foreach (var item in paths)
                {
                    if (!ftpClient.DirectoryExists(item))
                    {
                        continue;
                    }
                    ftpClient.DeleteDirectory(item, FtpListOption.ForceList);
                }

                ftpClient.Disconnect();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                timer.Enabled = true;
            }
        }


    }
}

调用运行:


using FluentFTP;

namespace JustHost.Ftp.ClearLog
{
    internal class Program
    {
        static void Main(string[] args)
        {
            CrontabFtpClear ftpClear = new CrontabFtpClear();
            Console.WriteLine($"FTP目录清理服务启动 {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}");
            while (true)
            {
                Thread.Sleep(1000);
            }
           
        }
    }
}

示例下载

justhost空间日志自动清理示例



转载请注明:清风亦平凡 » 迁移网站更改域名后一个可以使用的301跳转方案

喜欢 (0)or分享 (0)
支付宝扫码打赏 支付宝扫码打赏 微信打赏 微信打赏
头像
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址