IIS环境下PHP重写设置(支持中文参数)

在网站根目录下加入:

Web.Config:

<?xml version="1.0" encoding=”UTF-8″?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="cnUrl" stopProcessing="true">
                    <match url="!^(index\.php|images|assets|robots\.txt)" />
                    <action type="Rewrite" url="cnurl.php" />
                </rule>
                <rule name="Default" 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>
    </system.webServer>
</configuration>

cnurl.php:

<?php
   if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) {
      // IIS Mod-Rewrite
      $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
   } else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) {
      // IIS Isapi_Rewrite
      $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
   } else {
      // Use ORIG_PATH_INFO if there is no PATH_INFO
      (!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'])) {
          ($_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME']) ? ($_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']) : ($_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']);
      }
      // Append the query string if it exists and isn't null
   (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) && ($_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']);
   }
   require("index.php");

支持 IIS 环境下跑各种开源 PHP 项目,如:Wordpress、Emlog、Typecho 等。

IIS环境下PHP重写设置(支持中文参数)

https://sh.gg/posts/2012/iis-php-rewrite-config/

作者

Willin Wang

发布于

2012-11-27

更新于

2022-04-10

许可协议

评论