Windows转Linux伪静态404,Windows IIS中 WordPress伪静态中文分类和标签404解决办法

问题说明

WordPress建站推荐使用linux系统,但有的时候特殊情况必须要使用Windows服务器,将网站搭建到IIS上。在网站URL伪静态的时候如果出现中文,就会遇到提示404的情况,特别是标签和文章分类。下面给大家介绍一种处理的方式。

目前测试的Wordpress版本号:5.4

解决方案

1、在网站的目录下面新建一个“index2.php”文件,代码内容如下:

PHP

// IIS Mod-Rewrite

if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {

$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];

}

// IIS Isapi_Rewrite

else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {

$_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];

} else {

// Use ORIG_PATH_INFO if there is no PATH_INFO

if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )

$_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];

// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)

if ( isset($_SERVER['PATH_INFO']) ) {

if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )

$_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];

else

$_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];

}

// Append the query string if it exists and isn't null

if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {

$_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'];

}

}

require("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

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

// IIS Mod-Rewrite

if(isset($_SERVER['HTTP_X_ORIGINAL_URL'])){

$_SERVER['REQUEST_URI']=$_SERVER['HTTP_X_ORIGINAL_URL'];

}

// IIS Isapi_Rewrite

elseif(isset($_SERVER['HTTP_X_REWRITE_URL'])){

$_SERVER['REQUEST_URI']=$_SERVER['HTTP_X_REWRITE_URL'];

}else{

// Use ORIG_PATH_INFO if there is no PATH_INFO

if(!isset($_SERVER['PATH_INFO'])&&isset($_SERVER['ORIG_PATH_INFO']))

$_SERVER['PATH_INFO']=$_SERVER['ORIG_PATH_INFO'];

// Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)

if(isset($_SERVER['PATH_INFO'])){

if($_SERVER['PATH_INFO']==$_SERVER['SCRIPT_NAME'])

$_SERVER['REQUEST_URI']=$_SERVER['PATH_INFO'];

else

$_SERVER['REQUEST_URI']=$_SERVER['SCRIPT_NAME'].$_SERVER['PATH_INFO'];

}

// Append the query string if it exists and isn't null

if(isset($_SERVER['QUERY_STRING'])&&!empty($_SERVER['QUERY_STRING'])){

$_SERVER['REQUEST_URI'].='?'.$_SERVER['QUERY_STRING'];

}

}

require("index.php");

?>

2、修改网站根目录下面的web.config文件,新增一条规则伪静态的重新规则,并将此规则放到其他的规则的顶部,代码如下:

C#

1

2

3

4

具体的位置见下图

a3d39ea264bcdada06d4c9b229515b93.png

下面我把我完整的重写规则贴出来,大家可以参考或直接复制使用。

C#

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

3、注意事项:

如果 WordPress 不是装在根目录,则需要更改“”为“”。

如果在固定链接设置里把默认的标签前缀和分类目录前缀(tag 和 category)改了,则更改这句里的对应内容即可。

以上方法只针对标签和分类里面的中文链接,如果您需要对网站的全部中文链接(比如文章、页面等)进行转化支持,那么可以不用添加最后一步的web.config规则,只需要直接编辑web.config,将上图里面的改成即可。

由于此方法是新建index2.php文件,并配合伪静态规则实现,所以不受WordPress更新升级影响,推荐使用。

以上内容只是我个人在学习中的一点总结,如有不正之处还请谅解,谢谢!

发布者:柚子,转转请注明出处:https://ityouzi.com/archives/windows-iis-wordpress-rewrite-404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值