前言
因为最近搭建了一个新的博客,遇到了很多以前没有遇到的问题,在这里做个记录以防备用。
起因
不是所有WordPressd的博客程序都需要设置伪静态,一般情况是在你更改WordPress默认的固定链接时出现的,具体表现就是访问文章出现404错误的页面,这个时候你就需要设置伪静态规则了。
推荐固定链接:/%category%/%post_id%.html (域名/分类/ID.html)
环境
不同的环境需要设置不同的伪静态规则,常用的环境有IIS、Apache、Nginx,本文也是针对这几个常用环境而写的。
Nginx 伪静态规则
打开 nginx.conf 或者站点的配置环境,在server { } 大括号里添加如下代码:
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;
}
}
保存之后,重启 Nginx 即可。
Apache 伪静态规则
新建一个 htaccess.txt 文件,添加如下代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
上传至 WordPress 站点的根目录,再重命名为 .htaccess 即可。
IIS 伪静态规则
新建一个 txt 文件,将下面的代码添加到文件中:
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /tag/(.*) /index\.php\?tag=$1
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
另存为 httpd.ini 文件,上传到 WordPress 站点的根目录即可。
说明
请知晓自己博客程序搭建的环境,不同的伪静态规则之间并不通用,如果出现设置之后依旧是404错误页面,那估计没救了。
PS:kangle的机子都是Apache环境。
本文代码来源于https://www.ewuxiu.com/3330.html(头部广告闪得我眼睛疼,苦笑)