WordPress如何设置伪静态规则

发布于 2018-10-01  2.92k 次阅读


本文于 2018年10月1日 8:20 更新,注意查看最新内容

前言

因为最近搭建了一个新的博客,遇到了很多以前没有遇到的问题,在这里做个记录以防备用。

起因

不是所有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(头部广告闪得我眼睛疼,苦笑


这短短的一生,我们最终都会失去。