在网上有很多方法,我目前使用的是iis下的伪静态,直接添加httpd.ini文件就可以了,只是伪静态规则有很多,今天早上测试了很多,但大部分都会出现一个问题就是目录下自己新建的目录的图片无法访问,最后找了一个比较繁琐的伪静态使用,现在和大家分享下。

这里先说下不支持中文tag的修改方法:
打开:class-wp.php文件
原代码:

1
$pathinfo = $_SERVER['PATH_INFO'];

替换为:

1
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK");

原代码:

1
$req_uri = $_SERVER['REQUEST_URI'];

替换为:

1
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK");

现在我使用的伪静态规则:

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
[ISAPI_Rewrite]

# 3600 = 1 hour

CacheClockRate 3600

RepeatLimit 32

RewriteCond Host: ^h517\.com$

RewriteRule (.*) http\://www\.h517\.com$1 [R,I]

# Protect httpd.ini and httpd.parse.errors files

# from accessing through HTTP

# Rules to ensure that normal content gets through

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]

OK了,下边后台固定连接就可以了,上边给出的规则自定义结构是这样的,/%post_id%.html,修改完后记得按照上边的过程在载入一次httpd.ini,重新生成.htaccess。

特别说明,网上有些规则,可已静态文章、TGS、归档、但是对wp的单页面步支持,

这个规则中的第四行是针对单页面的伪静态

RewriteRule /(about|link|tags|sitemap) /index\.php\?pagename=$1

规则中的这部分(about|link|tags|sitemap),如果你有需要可以增加,比如(about|link|tags|sitemap)可以增加(about|link|tags|sitemap|page|like|love)等等等等,结尾处不要|

例如博客上面有“关于”,别名记得改成about,或你想要使用的,同时规则中也记得和别名一致。

当然,最后一步还是重新载入httpd.ini生成.htaccess。

解决目录不能访问的规则

1
RewriteRule /name/(.*) /name/$1 [L]

另外一种实现伪静态的方法是通过404页面来实现伪静态
第一步,首先建一个404.php文件,在文件中写上如下代码:

1
2
3
4
5
6
<?php
    $qs = $_SERVER['QUERY_STRING'];
    $_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ':80')+3);
    $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
    include('index.php');
        ?>

第二步,将这个404.php文件上传到你的网站根目录。
第三步,进入你的主机控制面板里面,在404错误页面设置这里指向这个动态404.php 。
第四步,在后台固定链接里 的 自定义结构 处填写:/%post_id%.html

上面分享了2中wordpress伪静态的方法了,你觉得那种比较合适就使用那种吧!