Windows服务器IIS环境完美实现WordPress伪静态:图文详解URL重写攻略

在之前的文章中我介绍了如何在Windows服务器中搭建WordPress,文章详见:Windows服务器搭建WordPress网站完整图文教程(包括IIS、PHP、MySQL、WordPress等设置)。这里我分享下我如何完成URL地址重写。


一:📝为什么要使用URL地址重写?

  • URL地址会更加美观,未重写之前后缀是带.php的,因为WordPress是基于PHP语言开发的,所以有后缀,重写后就变成:.html。
  • 在SEO优化和用户体验层面,简洁的URL结构(如/post-name/)远比动态参数(?p=123)更具优势。
  • 方便wordpress后台设置url地址。

二:📋操作步骤

1、服务器上已搭建好wordpress,并能正常的访问。

2、服务器上安装“ URL Rewrite”模块 ,点击下载,进入页面后拖动到最下面,下载中间简体版本(下图)。下载完成后直接按照安装即可。

Windows服务器IIS环境完美实现WordPress伪静态:图文详解URL重写攻略

3、在网站的根目录增加一个“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");

?>

4、网站根目录下面新增或修改“web.config”文件,完整内容见下面代码。这里主要的目的就是将用户反问的url地址解析到正确的php文件上。如果没有web.config文件则新建一个即可,下面的的“403”错误页面配置,则是自己加的一个页面,显示错误就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <defaultDocument enabled="true">
            <files>
                <remove value="Default.asp" />
                <remove value="index.htm" />
                <remove value="index.html" />
                <remove value="Default.htm" />
                <remove value="iisstart.htm" />
                <remove value="default.aspx" />
                <add value="index.php" />
            </files>
        </defaultDocument>

<rewrite>
	<rules>

		<rule name="ChineseURL" stopProcessing="true">
 			<match url="archives/(tag|category|special)/(.*)" />
 			<action type="Rewrite" url="index2.php" />
		</rule>

		<rule name="Main Rule" stopProcessing="true">
			<match url=".*" />
			<conditions logicalGrouping="MatchAll">
				<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
				<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
			</conditions>
			<action type="Rewrite" url="index.php/{R:0}" />
		</rule>

		<rule name="WordPress: demo.wordpress.com" patternSyntax="Wildcard">
			<match url="*" />
			<conditions>
				<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
				<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
			</conditions>
			<action type="Rewrite" url="index.php" />
		</rule>


	</rules>
</rewrite>
        <httpErrors>
            <remove statusCode="403" subStatusCode="-1" />
            <error statusCode="403" prefixLanguageFilePath="" path="/ErroPage/403.html" responseMode="ExecuteURL" />
        </httpErrors>


    </system.webServer>
</configuration>

5、设置wordpress的“固定链接”,具体见下图,“/archives/%postname%.html

Windows服务器IIS环境完美实现WordPress伪静态:图文详解URL重写攻略

6、完成以上步骤,则设置流程完成,可以访问文章链接查看了,成功的话的话后缀应该是.html的。

以上是自己个人经验总结,如有不正之处望见谅,谢谢!

发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/windowsp-wordpress-urlrewrite.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
IT柚子的头像IT柚子
上一篇 2025年3月30日 下午12:30
下一篇 2019年3月30日 下午8:59

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注