R’bolg在最初的时候由于没有经验,Wordpress设定了数字型的固定链接,由于这种结构不能使用伪静态,所以后来在网站流量上去之后就发现网站速度变得很慢,于是更换了伪静态,添加了自定义结构.html,这个时候原来的文章并不能进行自动跳转,搜索引擎引入的流量还是原来的地址。便用了跳转插件进行301逐个页面进行跳转,最终发现此插件很耗费主机资源,而且常常出错。Google了好多资料,发现其实可以写跳转规则,写了好多次,终于发现了一篇很好的文章,成功的将所有不带.html的页面完全跳转到了现在的页面,/archives/%post_id%跳转/archives/%post_id%.html即
https://www.sinstu.com/archives/552
打开自动跳转到https://www.sinstu.com/archives/552.html
下面为步骤和代码;(宝塔面板可用,直接在网站的配置文件里面添加代码即可)
注:源文章转载自sumile博客
在使用nginx之前,为了实现伪静态,我在wordpress后台设置里面的固定链接中,将“常用设置”设置为了固定链接,并在里面默认值(/ archives /%post_id%)的基础上在后面添加了名“.html”
后来使用了nginx之后,突然又发现.html不能正常打开了,显示的是nginx的404,没多想着急忙慌的就在固定链接里面选择了“数字型”,倒是没问题了
可是我之前的外链怎么办啊?
以前在其他地方留文章的外链留下的可都是带html的,总不能放弃这些文章吧
于是就在nginx里面配置了一下转发规则,将符合规则的.html路径对应到数字型的路径下,就可以正常访问了。
下面是两个我配置过的访问规则,我自己试了试,是可以的:
1
2
3
|
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
1
2
3
|
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%”就可以了
各位根据自己的需要自己修改就好了。
下面我再发一个我完整的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
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;
}
}
|
修改完跳转规则后重新启动nginx使其的配置生效即可;
暂无评论内容