iis6,iis7+ wordpress路径重写配置/%postname%/配置

  最近在window2003、window7下安装了WordPress,将自己发现的额问题和如何解决总结一下。当配置WordPress固定链接设置为下面这种结构时,注意需要配置iis6,iis7+增加通配符隐射到你使用的framework版本aspnet_isapi.dll上才行,要不会出现404错误,找不文件。

http://域名/%postname%/
iis6,iis7+ wordpress路径重写配置/%postname%/配置

  window2003使用的是fastcgi搭建的php运行环境(参考:IIS6 fastcgi配置php运行环境),window7添加模块隐射到D:\WAPM\PHP\php-cgi.exe就可以了。

iis6,iis7+ wordpress路径重写配置/%postname%/配置

  WordPress url重写为上面路径时,不包含index.php文件,这种路径是不存在通过url重写时,需要配置iis支持通配符映射,然后进行转发到php进行处理才行。

  网上找到的都是居于asp版本的isapi_rewrite.dll的WordPress重写,这个需要付费,免费不支持单个站点的配置(而且经过测试这个重写组件在公司一台服务器window2003上设置无效,权限已经全部加上,不懂搞什么,这台服务器也安装过安全狗,但是安全狗的iis模块也一样不起作用,见鬼了。。),所以本示例使用asp.net的URLRewriter.dll这个组件,下载URLRewriter.dll后,将文件解压放在网站根目录的bin目录下,然后配置web.config增加如下规则。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
  </configSections>
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>/wp-admin/(.*)</LookFor>
        <SendTo>/wp-admin/$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>/wp-login.php</LookFor>
        <SendTo>/wp-login.php</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>/wp-includes/(.*)</LookFor>
        <SendTo>/wp-includes/$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>/wp-content/(.*)</LookFor>
        <SendTo>/wp-content/$1</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>/index.php/(.*)</LookFor>
        <SendTo>/index.php/$1?preview=true</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>/(.*)</LookFor>
        <SendTo>/index.php/$1?preview=true</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>	
	<system.web>
    <httpModules>
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
    </httpModules>
		<compilation defaultLanguage="c#" debug="true"></compilation>
    <customErrors mode="Off"></customErrors>
		<authentication mode="Windows" />
		<authorization>
			<allow users="*" />
		</authorization>
		<trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
		<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="30" cookieless="false" />
		<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
	</system.web>>
<!-----下面的配置是iis7通配符隐射加上的,iis6不需要,设置iis6也不会修改web.config文件,具体看下面如何配置----->
    <system.webServer>
        <handlers>
            <add name="__WP__" path="*" verb="*" modules="IsapiModule" scriptProcessor="F:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
        </handlers>
    </system.webServer>
</configuration>

  iis6添加通配符隐射支持WordPress url重写。

  右键你的网站,属性,主目录,点击配置,插入(N),取消勾选“确认文件是否存在(v)”,这个步骤是最重要的,然后可执行文件选择你对应版本的aspnet_isapi.dll文件。

iis6,iis7+ wordpress路径重写配置/%postname%/配置

  iis7+添加通配符隐射支持WordPress url重写,看上面贴出的web.config最后的说明,直接增加system.webServer配置即可。

  或者打开iis7+,点击你的网站,双击右边的“处理程序隐射”,右键,“添加通配符脚本隐射”,名称随便起,可执行文件选择对应版本framework的aspnet_isapi.dll文件,确定即可。

 

  这样WordPress不带index.php的固定链接设置/%postname%/就可以正常运行了。

iis6,iis7+ wordpress路径重写配置/%postname%/配置


原创文章,转载请注明出处:iis6,iis7+ wordpress路径重写配置/%postname%/配置
评论(0)Web开发网
阅读(110)喜欢(0)不喜欢(0)PHP/apache/Perl