标签归档 技术杂谈

通过seo圣人

图解冒泡算法

冒泡排序算法其实就是比较相邻的元素。如果第一个比第二个大,就交换他们两个的位置。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

C语言编写的冒泡算法:

#include <stdio.h>
 
#define ARR_LEN 255 /*数组长度上限*/
#define elemType int /*元素类型*/
 
/* 冒泡排序 */
/* 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 */
/* 2. 对所有元素均重复以上步骤,直至最后一个元素 */
/* elemType arr[]: 排序目标数组; int len: 元素个数 */
void bubbleSort (elemType arr[], int len) {
    elemType temp;
    int i, j;
    for (i=0; i<len-1; i++) /* 外循环为排序趟数,len个数进行len-1趟 */
        for (j=0; j<len-1-i; j++) { /* 内循环为每趟比较的次数,第i趟比较len-i次 */
            if (arr[j] > arr[j+1]) { /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
}
int main (void) {
    elemType arr[ARR_LEN] = {3,5,1,-7,4,9,-6,8,10,4};
    int len = 10;
    int i;
     
    bubbleSort (arr, len);
    for (i=0; i<len; i++)
        printf ("%d\t", arr[i]);
    putchar ('\n');
     
    return 0;
}

Python语言编写的冒泡算法:

def bubble_sort(nums):
    for i in range(len(nums) - 1):  # 这个循环负责设置冒泡排序进行的次数
        for j in range(len(nums) - i - 1):  # j为列表下标
            if nums[j] > nums[j + 1]:
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
    return nums
 
print(bubble_sort([45, 32, 8, 33, 12, 22, 19, 97]))
# 输出:[8, 12, 19, 22, 32, 33, 45, 97]

C++编写的冒泡算法:

#include <iostream>
using namespace std;
template<typename T>
//整数或浮点数皆可使用
void bubble_sort(T arr[], int len)
{
    int i, j;  T temp;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
        if (arr[j] > arr[j + 1])
        {
            temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
}
int main()
{
    int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 };
    int len = (int) sizeof(arr) / sizeof(*arr);
    bubble_sort(arr, len);
    for (int i = 0; i < len; i++)
        cout << arr[i] << ' ';
 
    cout << endl;
 
    float arrf[] = { 17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.8, 5.4 };
    len = (int) sizeof(arrf) / sizeof(*arrf);
    bubble_sort(arrf, len);
    for (int i = 0; i < len; i++)
        cout << arrf[i] << ' ';
 
    return 0;
}

PHP语言编写的冒泡算法:

function bubbleSort($numbers) {
    $cnt = count($numbers);
    for ($i = 0; $i < $cnt - 1; $i++) {
        for ($j = 0; $j < $cnt - $i - 1; $j++) {
            if ($numbers[$j] > $numbers[$j + 1]) {
                $temp = $numbers[$j];
                $numbers[$j] = $numbers[$j + 1];
                $numbers[$j + 1] = $temp;
            }
        }
    }
 
    return $numbers;
}
 
$num = array(20, 40, 60, 80, 30, 70, 90, 10, 50, 0);
var_dump(bubbleSort($num));

其实无论你用了什么语言,你发现,算法的过程都相差无几,那么下面我用两组图片来解释冒泡算法的排序过程:

(图一冒泡算法)

(图二冒泡算法)

怎么样,通过动态图片对冒泡算法的讲解,是不是通俗易懂?

通过seo圣人

nginx跳转规则基础知识详解

做运维的都知道,nginx是一款非常轻巧而又强大的web服务端软件,性能非常突出,软件本身体积也很小,较apache相比,nginx有着许多无可替代的优势,那么我们今天就详细的讲解下nginx跳转规则的基础知识。

下面的句子是一段简单的nginx语法规则:

location [=|~|~*|^~] /uri/ { … }

针对上面的例子,我来对这段nginx规则里面的每一个符号做一个详细的解释:
= 开头表示精确匹配;
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格);
~ 开头表示区分大小写的正则匹配;
~*  开头表示不区分大小写的正则匹配;
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则;
/ 通用匹配,任何请求都会匹配到;
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考);
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

下面是一段nginx匹配规则以及详细的解释,具体的规则省略:

location = / {
	#规则A
	#访问根目录/, 比如https://www.dobunkan.com/ 将匹配规则A
}

location = /login {
	#规则B
	#访问 https://www.dobunkan.com/login 将匹配规则B,https://www.dobunkan.com/register 则匹配规则H
}

location ^~ /static/ {
	#规则C
	#访问 https://www.dobunkan.com/static/a.html 将匹配规则C
}

location ~ \.(gif|jpg|png|js|css)$ {
	#规则D
	#访问 https://www.dobunkan.com/a.gif, https://www.dobunkan.com/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 https://www.dobunkan.com/static/c.png 则优先匹配到 规则C
}

location ~* \.png$ {
	#规则E
	#访问 https://www.dobunkan.com/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。
}

location !~ \.xhtml$ {
	#规则F
	#访问 https://www.dobunkan.com/a.xhtml 不会匹配规则F和规则G,https://www.dobunkan.com/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
}

location !~* \.xhtml$ {
	#规则G
	#访问 https://www.dobunkan.com/a.xhtml 不会匹配规则F和规则G,https://www.dobunkan.com/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
}

location / {
	#规则H
	#访问 https://www.dobunkan.com/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
}

对于nginx规则,目前中文教程并不多,英语底子不好的很难看的明白,你可以对照上面的讲解逐条尝试,一定会有收获的,当然了,你还需要对你的尝试结果做做总结,这样你才会有进步,在日后的应用中才会得心应手!

通过seo圣人

商务通怎样清除动态口令?

商务通是一款客服工具,一款咨询工具,相信做互联网运营的人都知道这个产品,目前有很多的企业都在使用,之前是为了规避一些漏洞,很多企业启用了商务通口令。但如今随着微信的流行,商务通口令已经无法满足企业的需求,主要是效率太低,使用不方便,那么今天我们就谈谈如何清除商务通动态口令。

当然了,我这里讲的是企业版的商务通,也就是商务通的服务端程序放在你公司的服务器上面,如果你用的是坐席版的商务通请自行联系商务通公司的客服人员给予技术支持。

其实清除商务通动态口令很简单,我们只需要找到商务通服务器目录下的“\LR_Data\Site\你的商务通ID”这个路径下面的klk.config文件,将这个文件清空,然后保存。如果担心操作失误,建议先备份下这个文件。

清空klk.config文件里面的内容之后保存,重启服务器,重新登录商务通,这时候,你发现商务通口令以及你的密码已经被清空,登录第一件事就是需要你重新设置新的密码。

到这里,商务通的动态口令就彻底清理了,如果你有疑问,请在下方留言。

通过seo圣人

Python用raw_input获取键盘输入报错怎么办?

在学习python的时候使用raw_input来获取键盘输入,结果出现了下面的报错:

Traceback (most recent call last):
  File "******\***.py", line 19, in <module>
    j = raw_input("aa")
NameError: name 'raw_input' is not defined

遇到这样的问题让我束手无策,翻阅了大量的资料发现是环境的问题,原来Python从3.0开始抛弃了raw_input这个函数,input函数取而代之,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

def sum(n):
    if (n == 1):
        s=1
    else:
        s = n * sum(n-1)
    return s

i = input("请输入:")
j = sum(i)
print (j)

看了官方的手册,写出了上面的代码,结果又是报错,报错代码如下:

Traceback (most recent call last):
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\ding\1.py", line 16, in <module>
    j = sum(b)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\ding\1.py", line 9, in sum
    s = n * sum(n-1)
TypeError: unsupported operand type(s) for -: 'str' and 'int'

无奈之下,继续看官方手册对input的介绍,原来官方对input的解释是这样的:

 input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。 input函数返回的是字符串。

说input返回的是一个字符串,而不是int型的,因此才会报错,知道这个问题就好办了,咱们把获取的字符串转换成int型问题就解决了,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-


def sum(n):
    if (n == 1):
        s=1
    else:
        s = n * sum(n-1)
    return s


i = input("请输入:")
b = int(i)
j = sum(b)
print (j)

到这里,问题彻底解决!总结:在Python环境中,读取键盘输入的函数有raw_input和input两个,在python3里面,函数raw_input已经被丢弃,而input函数从键盘中读取的字符默认为string型。因此读取键盘输入的数据需要根据你的实际环境来写,如果用input来获取字符,记得转换类型!

通过seo圣人

C语言和pyhon语言用递归算法计算1到1000的值

C语言使用递归算法计算从1加到1000的值,代码如下:

#include<stdio.h>
int sum(int n)
{
	int s;
	if(n==1)
	{
		s=1;
	}
	else
	{
		s=n+sum(n-1);
	}
	return (s);
} 

main()
{
	int i=100; 
	int j;
	j=sum(i);
	printf("result:%d",j);
}

Python语言使用递归算法计算从1加到1000的值,代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
申明一个递归函数
'''
def sum(n):
    if (n == 1):
        s=1
    else:
        s = n + sum(n-1)
    return s

i = 1000 
j = sum(i)
print (j)

以上两段代码就是递归算法用C语言和Python两种语言的写法,从代码上看,Python语言的写法貌似更简单,单可读性比较差,C语言代码量略大,单比较容易读懂。

通过seo圣人

帝国CMS7.5远程保存图片没有后缀的解决方法

帝国CMS7.5版本远程保存图片会存在一个问题,就是传上去的图片没有任何后缀,这个问题相信很多人都遇到了,而且束手无策,今天我就来讲下解决帝国CMS7.5远程保存图片没有后缀的解决方法。

帝国CMS7.0,在路径 e/class/functions.php中修改e/class/functions.php大概第1455行和1456行,代码如下:

        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text);

修改成下面的样子:

        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)([^'|\"|\\\\\"|]*)('|\"|\\\\\"|)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5".$exp2."\\6\\7>",$text);

然后在修改 e/class/connect.php 的大概2862行

$r[filetype]=GetFiletype($url);

在这句话的后面加入如下代码:

if ((strlen($r[filetype]) !==4 ) OR (strlen($r[filetype]) !==5 )) $r[filetype]=".jpg";

修改完后不影响原来正常的使用,也就是普通形式的图片,和不带扩展名形式的图片都能够正确的远程保存下来。

帝国CMS7.2和7.5需要替换e/class/functions.php中的两个位置,
第一个位置:
//替换图片标签
function RepImg($text,$copyflash){
        global $ecms_config;
        $exp1="";
        $exp2="";
        //去掉图片链接
        if($ecms_config['sets']['saveurlimgclearurl']==1)
        {
                $zz2="/\<(a|A) (.*?)(href|Href)=('|\"|\\\\\"|)(.+?)><(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)><\/(a|A)>/is";
                $text=preg_replace($zz2,"<\\6 \\7\\8=\\9\\10\\11\\12>",$text);
        }
        $zz1="/\<(img|IMG) (.*?)(src|SRC)=('|\"|\\\\\"|)(.+?)(\.jpg|\.JPG|\.gif|\.GIF|\.png|\.PNG|\.bmp|\.BMP|\.jpeg|\.JPEG)(.*?)>/is";
        $text=preg_replace($zz1,"<\\1 \\2\\3=\\4".$exp1."\\5\\6".$exp2."\\7>",$text);
        return $text;
}

第二个位置:

function DoTranUrl($url,$classid){
        global $public_r,$class_r,$ecms_config,$efileftp_fr;
        $classid=(int)$classid;
        //处理地址
        $url=trim($url);
        $url=str_replace(" ","%20",$url);
    $r[tran]=1;
        //附件地址
        $r[url]=$url;
        //文件类型
        $r[filetype]=GetFiletype($url);
        if(CheckSaveTranFiletype($r[filetype]))
        {
                $r[tran]=0;
                return $r;
        }
        //是否已上传的文件
        $havetr=CheckNotSaveUrl($url);
        if($havetr)
        {
                $r[tran]=0;
                return $r;
        }
        //是否地址

通过seo圣人

位运算与位移怎样理解?

在python中,位运算分为按位与运算(&)、按位或运算(|)、按位异或运算(^)、按位取反运算(~)、按位左移运算(<<)和按位右移运算(>>),当然了在别的编程语言里面也有涉及这个知识点,譬如C语言、PHP语言、JAVA语言等等,原理都是想通的,俗话说的好“温故而知新”,我在这里把这个知识点再强调一遍。

学过计算机的人对二进制并不陌生,这个位运算其实就是基于二进制的,那么我们在python代码中什么两个变量,方便我们通过实验来讲解位运算:
a = 623 #变量a的二进制为:0010 0110 1111
b = 139 #变量b的二进制为:0000 1000 1011

1、按位与运算(&)
我们先把a和b进行按位于运算,也就是
print a&b #打印的结果是11
为什么结果是11呢?其实在按位与运算中,参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0,那么a和b进行按位与运算之后的二进制就是“0000 0000 1011”,将这个二进制的数字转换成十进制结果就是11。请看下面的按位与运算图解:

2、按位或运算(|)
print a|b # 打印结果是751
在按位或运算中,只要对应的二个二进位有一个为1时,结果位就为1。那么a和b进行按位或运算的的二进制结果就为0010 1110 1111,转换为二进制的结果就是751。请看下面的按位或运算图解:

3、按位异或运算(^)
print a^b # 运算结果为740
在按位异或运算中,当两对应的二进位相异时,结果为1,相同则为0,那么a和b进行按位异或运算的二进制结果就为0010 1110 0100,转换为二进制的结果就为740。请看下面的按位异或运算图解:

4、按位取反运算(~)
print ~a # 运算结果为-624
print ~b # 运算结果为-140
在按位取反运算中,对数据的每个二进制位取反,即把1变为0,把0变为1 。~a的二进制按位取反运算后的二进制结果为1111 1101 1001 0000转换为10进制的结果是-624,~b的二进制按位取反运算后的二进制结果为1111 0111 0100,转换为十进制的结果为-140,这里涉及到反码、补码知识,忘记了的同学请自行恶补!请看下面的按位取反运算图解:

5、按位左移运算(<<)
print a<<b #运算结果为434167633083893069286773515120622788069556224
在左移动运算中,运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。因为数字太大了,我就懒得写了。

6、按位右移运算(>>)
print a>>b #运算结果为0
在右移动运算中,把”>>”左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数,这个数字推算起来也不得了,我也就不多写了,你知道是怎么回事就行了。

 a<<b其实就是把a转换成二进制,向左移动139位,然后在转换成十进制。
 a>>b其实就是把a转换成二进制,向右移动139位,然后在转换成十进制。

因为例子中的数字太大,我现在把数字变小一点,方便大家理解
a=11 #二进制为1011
b=3  #二进制为11
那么a<<b的运算结果如下:
0000 0000 1011
向左边移动3个位置,结果就为:
0000 0101 1000
转换成十进制就等于88

a>>b的运算结果如下:
那么a>>b的运算结果如下:
0000 0000 1011
向右边边移动3个位置,结果就为:
0000 0000 0001

转换成十进制就等于1

针对python的位运算今天就讲这么多,如果你还有不明白的,欢迎在下方留言,咱们一起学习,共同研究!

通过seo圣人

百度刷下拉词的作用是什么?

百度刷下拉词的作用是什么?

在我们使用百度日常搜索的过程中,你会发现输入若干字符的时候,搜索框会出现下拉词,比如:当你搜索”医院“,下拉词就会出现XX医院、XX医院哪家好等等,当然了,这里面有的下拉词是用户的搜索热度引起了百度搜索引擎的推荐,但是大部分其实是人为的,也就是传说中的“刷下拉词”,差不多就是作弊。

那么,刷百度下拉词的作用是什么呢?

1、降低成本
大家都知道,现在百度竞价的成本非常高,点击一次动辄就是几百上千元,能不能带来客户另说,这里面还掺杂了大量的恶意点击,这时候刷百度下拉词的作用就体现出来了。

比如,搜索“整形医院”,如果下拉词出现了你的品牌词“整形医院 XXX最好”,其中XXX就是你的品牌,这样的点击成本就大大的降低了,而且客户进入的页面也会相对精准很多。

又如,搜索“双眼皮”,如果下拉词出现了你的品牌词+医生“双眼皮 XX医院YY医生做的很棒”,无论是从点击成本,还是从用户体验都会提升了无数个档次。

2、品牌效应
搜索关键词,下拉框出现了你的品牌,说明搜索引擎在推荐你,从用户的角度来说,他会毫不犹豫的关注你,毕竟全国那么多同类企业,凭什么只推荐你?

搜索关键词,下拉框出现了你企业的某位人才或者其他与你企业相关的东西,这对你的企业来说都是好事。

下拉词通过从企业的曝光度、企业专业人员的曝光度,这无形之中就提升了你的品牌形象,和你的品牌度。

3、精准的流量
搜索某关键词,有的人是想了解产品的信息,有的是想了解产品的优势,更有的是想了解产品是否存在历史负面,当然还有些是想了解产品的某一项具体的体征,如果下拉词包含了这些,这无疑是减少了客户的时间成本,通过下拉词快速的找到了他想看的东西,也提升了用户的体验度,一举两得。

当然了,百度刷下拉词的作用远远不止上述的那么简单,从品牌的角度,从企业人才个人IP的角度,从企业产品的知名度,从广告的费用,都会为企业带来巨大的好处,最关键的是,对于广告投入大的企业来说,投入下拉词的成本是极低的,可谓二两力拨千斤就是这么个道理。

如果你想做百度下拉词可以联系我,如果你想做百度下拉词的代理你也可以联系我,咱们互利共赢!共创辉煌!

相关阅读:

百度下拉词是怎么做的?

通过seo圣人

sqlserver如何查看近期执行过的语句?

无论是手工执行数据库语句,还是客户端执行了数据库语句,这在sqlserver里面其实都是有记录的,我们可以查询最新的1000条sql语句,同时可以限制时间范围,sqlserver如何查看近期执行过的语句如下:

SELECT TOP 1000 
       ST.text AS '执行的SQL语句',
       QS.execution_count AS '执行次数',
       QS.total_elapsed_time AS '耗时',
       QS.total_logical_reads AS '逻辑读取次数',
       QS.total_logical_writes AS '逻辑写入次数',
       QS.total_physical_reads AS '物理读取次数',       
       QS.creation_time AS '执行时间' ,  
       QS.*
FROM   sys.dm_exec_query_stats QS
       CROSS APPLY 
sys.dm_exec_sql_text(QS.sql_handle) ST
WHERE  QS.creation_time BETWEEN '2019-10-25 16:57:00' AND '2019-10-25 16:58:00' 
ORDER BY
     QS.total_elapsed_time DESC 
     
     

注意,时间和条数请按照自己的需求去修改。

通过seo圣人

nginx伪静态规则将80端口不带www的域名全部跳转到带https的www域名

遇到一个很久都无法解决的问题,就是我的网站在开启证书后,想把80端口的域名、不带www的域名全部301跳转到带ssl证书的www域名,看我下面的例子:

http://dobunkan.com    301  到   https://www.dobunkan.com

http://www.dobunkan.com    301  到   https://www.dobunkan.com

https://dobunkan.com    301  到   https://www.dobunkan.com

看起来很简单的问题,但是解决起来非常麻烦,因为nginx重写规则不支持 if(条件1 || 条件2),今天想到了一个很笨的解决办法,思路是这样的,把80端口、443端口的顶级域名、443端口的长域名分开写,这样就达到目的了,请看我的例子:

server {
    listen 80;
    server_name www.dobunkan.com dobunkan.com;
    rewrite ^(.*)$ https://www.dobunkan.com$1 permanent;
}
server {
    listen 443 ssl;
    ssl_certificate    /www/host/domain/vhost/cert/domain.dobunkan.com/fullchain.pem;
    ssl_certificate_key    /www/host/domain/vhost/cert/domain.dobunkan.com/privkey.pem;
    server_name dobunkan.com;
    return 301 https://www.dobunkan.com$request_uri;
}
server {
    listen 443 ssl;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/domain.dobunkan.com/public_html;
    ssl_certificate    /www/host/domain/vhost/cert/domain.dobunkan.com/fullchain.pem;
    ssl_certificate_key    /www/host/domain/vhost/cert/domain.dobunkan.com/privkey.pem;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;
    server_name  www.dobunkan.com;
	
	
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-73.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/host/domain/vhost/rewrite/domain.dobunkan.com.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log off;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log off;
        access_log off; 
    }
    access_log  /www/wwwlogs/domain.dobunkan.com.log;
    error_log  /www/wwwlogs/domain.dobunkan.com.error.log;

}

非常笨的方法顺利的解决了nginx301跳转的问题,如果你有更好的方法,请在下方留言!!!