IIS环境下PHP rewrite重写设置(支持中文参数)
在网站根目录下加入:
Web.Config:
<?xmlversion="1.0"encoding=”UTF-8″?> <configuration> <system.webServer> <rewrite> <rules> <rulename="cnUrl"stopProcessing="true"> <matchurl="!^(index\.php|images|assets|robots\.txt)"/> <actiontype="Rewrite"url="cnurl.php"/> </rule> <rulename="Default"patternSyntax="Wildcard"> <matchurl="*"/> <conditions> <addinput="{REQUEST_FILENAME}"matchType="IsFile"negate="true"/> <addinput="{REQUEST_FILENAME}"matchType="IsDirectory"negate="true"/> </conditions> <actiontype="Rewrite"url="index.php"/> </rule> </rules> </rewrite> </system.webServer> </configuration>
cnurl.php:
<?php if(isset($_SERVER['HTTP_X_ORIGINAL_URL'])){ //IISMod-Rewrite $_SERVER['REQUEST_URI']=$_SERVER['HTTP_X_ORIGINAL_URL']; }elseif(isset($_SERVER['HTTP_X_REWRITE_URL'])){ //IISIsapi_Rewrite $_SERVER['REQUEST_URI']=$_SERVER['HTTP_X_REWRITE_URL']; }else{ //UseORIG_PATH_INFOifthereisnoPATH_INFO (!isset($_SERVER['PATH_INFO'])&&isset($_SERVER['ORIG_PATH_INFO']))&&($_SERVER['PATH_INFO']=$_SERVER['ORIG_PATH_INFO']); //SomeIIS+PHPconfigurationsputsthescript-nameinthepath-info(Noneedtoappendittwice) 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']); } //Appendthequerystringifitexistsandisn'tnull (isset($_SERVER['QUERY_STRING'])&&!empty($_SERVER['QUERY_STRING']))&&($_SERVER['REQUEST_URI'].='?'.$_SERVER['QUERY_STRING']); } require("index.php");
支持IIS环境下跑各种开源PHP项目,如:Wordpress、Emlog、Typecho等。