发现有的设置方法不太全。既要设置nginx,又要设置wordpress,且wordpress里哪种方法好呢?
所以本文共分为三部分。
一、nginx设置方法
共有两种。
Nginx下wp伪静态第一种配置方式
1
2
3
4
5
6
7
8
9
10
11
12
13
|
location / { if (-f $request_filename /index.html){ rewrite (.*) $1 /index.html break ; } if (-f $request_filename /index.php){ rewrite (.*) $1 /index.php; } if (!-f $request_filename ){ rewrite (.*) /index.php; } } |
完整的配置参考
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
|
server { listen 80; server_name niliu.me; root / var /www/html/niliu; index index.html index.htm index.php; location / { if (-f $request_filename /index.html){ rewrite (.*) $1 /index.html break ; } if (-f $request_filename /index.php){ rewrite (.*) $1 /index.php; } if (!-f $request_filename ){ rewrite (.*) /index.php; } } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var /www/html/niliu $fastcgi_script_name ; include fastcgi_params; } } |
一开始的时候location下面是这么写的, 根本解释不了那个s, 对if语句中的判断不清晰,可以参考Nginx中文文档
1
2
3
4
|
if (!-e $request_filename ) { rewrite ^(.*)$ /index.php?s= $1 last; break ; } |
Nginx下wp伪静态第二种配置方式
1
2
3
|
location / { try_files $uri $uri / /index.php? $args ; } |
完整配置参考:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
server { listen 80; server_name niliu.me; root / var /www/html/niliu; index index.html index.htm index.php; location / { try_files $uri $uri / /index.php? $args ; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME / var /www/html/niliu $fastcgi_script_name ; include fastcgi_params; } } |
二、wordpress设置方法
检测主机是否支持伪静态的方法:在WP后台 > 设置 > 固定链接,设置为 非默认带?的那种结构,然后访问任何一篇文章,如果出现 404 错误,说明你的主机当前不支持 WordPress 伪静态。
三、wordpress后台配置的哪种好?
没有在后台的 “设置->>固定链接” 中设置链接样式的话,就属于默认的固定连接样式,它的形式如下
http://riji.caojiawan.cn/?p=123
优点
- 链接短小
- 移植性好,当 WordPress 搬家时,新主机万一不支持 Rewrite 模块,你不需要进行301定向
缺点
- 缺乏语义性,对搜索引擎收录稍稍有影响,但是不大
日期、月份和名称链接样式
这是官方默认的链接样式,分日期、月份和名称两种,形式如下
http://riji.caojiawan.cn/2012/09/11/sample-post/
http://riji.caojiawan.cn/2012/09/sample-post/
优点
- 语义性增强,增加了文章发布时间和文章名称
- 文章发布时间和文章名称在链接中,有利于搜索引擎理解
缺点
- 生成的链接长度太长,不利于发送等
- 文章标题直接显示在连接中,有的时候并不希望这样
名称型链接样式
直接加一个文章名称,形式如下
http://riji.caojiawan.cn/sample-post/
优点
- 语义性强,文章名称在链接中,便于搜索引擎理解
缺点
- 生成链接长度过长,中文链接会被编码,链接乱且长
关键词类型链接样式
将文章中的关键词提取出来,然后自定义固定连接,用“-”链接关键词,很多高手博客使用这种链接,样式如下
http://riji.caojiawan.cn/m/limit-login-attempts/
优点
- 语义性强,便于搜索引擎理解
- 生成链接长度合适
缺点
- 需要博主有一定的英语水平和耐心
- 对中文博客的效果不大,几乎没有中国人会搜索一个英文单词来看你的中文文章
数字型链接样式
直接把文章的ID写在链接中,样式如下
http://riji.caojiawan.cn/123
优点
- 链接极短
缺点
- 没有任何语义性
数字型语义增强版链接样式
不仅仅是文章 ID 还增加一些英文单词,例如:post、archives等,形式如下
http://riji.caojiawan.cn/archives/123
http://riji.caojiawan.cn/post-1268.html
优点
- 链接较短
- 增加了关键词,便于搜索引擎理解这个页面是一篇文章
缺点
- 语义性不是非常明确
如何自定义博客固定链接
了解结构标签
WordPress 设置了一系列的固定链接结构标签,来让你定义固定链接,具体标签及功能如下
%year% 文章发表的年份,四位数,如 2004
%monthnum% 月份,如 05
%day% 天,如 28
%hour% 小时,如 15
%minute% 分钟,如 43
%second% 秒,如 33
%postname% 文章标题的别名 (编辑文章/页面时的别名栏)
%post_id% 文章的唯一ID,如 423
%category% 分类的别名 (新建/编辑分类时的别名栏)
%tag% 标签的别名(新建/编辑标签时的别名栏)
%author% 作者的别名
之后,我们需要打开后台 “固定链接设置” 页面,找到 “自定义链接结构” 根据自己的需求,写上链接结构,加上结构标签。例如潜行者m博客用的链接样式
http://riji.caojiawan.cn/yx-1268.html
在后台自定义链接结构时,需要定义成
/yx-%post_id%.html
其他注意事项
固定链接在 WordPress 博客中非常重要,强烈建议在建博初期就确定下来,而且之后不要再更换。如果你更换了固定链接,之前的固定链接打开之后,就会出现404错误,影响搜索引擎收录。
当然,如果你迫不得已更换博客的固定链接,请安装相应的 301链接重定向 插件,使用插件将之前的固定链接重定向到更新后的固定链接上。这类的插件比较多,这里推荐几个:Simple 301 Redirects、Redirection等。
关于 WordPress 固定链接更详细的说明,请看官方文档 :zh-cn:使用固定链接