萌新网在最初的时候由于没有经验,最早使用了阿里云的虚拟主机,Wordpress设定了数字型的固定链接,由于这种结构不能使用伪静态,所以后来在网站流量上去之后就发现网站速度变得很慢,于是更换了伪静态,添加了自定义结构.html,这个时候原来的文章并不能进行自动跳转,变用了跳转插件进行301逐个页面进行跳转,最终发现此插件很耗费主机资源,每天虚拟主机都好宕机一次,一狠心换了阿里云的ECS,之后死机问题没有了,一直用着插件大概半年,便决定撤去插件,然而在插件撤掉后我发现大量的404页面,也就是之前不带.html的页面还是在被搜索引擎收录,头一下就懵了,再把插件装回来吗?Google了好多资料,发现其实可以写跳转规则,写了好多次,终于发现了一篇很好的文章,成功的将所有不带.html的页面完全跳转到了现在的页面,即
https://www.macxin.com/archives/274
打开自动跳转到https://www.macxin.com/archives/274.html
下面为步骤和代码;
注:源文章转载自sumile博客
在使用nginx之前,为了实现伪静态,我在wordpress后台设置里面的固定链接中,将“常用设置”设置为了固定链接,并在里面默认值(/ archives /%post_id%)的基础上在后面添加了名“.html”
后来使用了nginx之后,突然又发现.html不能正常打开了,显示的是nginx的404,没多想着急忙慌的就在固定链接里面选择了“数字型”,倒是没问题了
可是我之前的外链怎么办啊?
以前在其他地方留文章的外链留下的可都是带html的,总不能放弃这些文章吧
于是就在nginx里面配置了一下转发规则,将符合规则的.html路径对应到数字型的路径下,就可以正常访问了。
下面是两个我配置过的访问规则,我自己试了试,是可以的:
if ($request_filename ~ (.*)/archives/(.*).html$){ rewrite (/archives/.*).html $1 permanent; }
这一条,适合于后缀为”.html” 的转成去掉 html 的,如:https://www.macxin.com/archives/274.html打开自动跳转到https://www.macxin.com/archives/274
if ($request_filename ~ (.*)/archives/[0-9]*$){ rewrite (/archives/[0-9]*$) $1.html permanent; }
而这一条,适合给原来的链接添加后缀 html 的,如https://www.macxin.com/archives/274打开自动跳转到https://www.macxin.com/archives/274.html
对于以上两条,如果你的 url 中不是如我一样的“/archives/”的话,那么将这个修改为你自己的部分(萌新网就是用的这一条)
另外,你要转成什么样子的,就在 固定链接 里面的常用设置那里选择什么样子的:如我最后要转成”https://sumile.cn/archives/1688.html”,那么我在这里就应该选择 自定义链接,然后里面要填写 “/archives/%post_id%.html”
。如果我要转成”https://www.macxin.com/archives/274”,那么我选择“数字型”或者在 “自定义链接” 里面填写 “/archives/%post_id%”就可以了
各位根据自己的需要自己修改就好了。
下面我再发一个我完整的配置
server { listen 80; server_name sumile.cn www.sumile.cn ; autoindex off; index index.php; location / { root C:wampwwwblog; index index.php; #if ($request_filename ~ (.*)/archives/(.*).html$){ # rewrite (/archives/.*).html $1 permanent; #} if ($request_filename ~ (.*)/archives/[0-9]*$){ rewrite (/archives/[0-9]*$) $1.html permanent; } if (-f $request_filename/index.php){ rewrite (.*) $1/index.php; } if (!-f $request_filename){ rewrite (.*) /index.php; } if (-f $request_filename/index.html){ rewrite (.*) $1/index.html break; } } location ~ .php$ { root C:wampwwwblog; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
[danger]配置请按照自己的实际情况改动,不能生搬硬套,比如其中的网址都应该改为自己的才能使用![/danger]
修改完跳转规则后重新启动nginx使其的配置生效即可;
[success]注:注意保存自己的原来配置,防止配置不合适造成的网站不能访问等问题,有备无患。[/success]
暂无评论
要发表评论,您必须先 登录