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

在网站根目录下加入:

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等。

(0)

相关推荐

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

    在网站根目录下加入: Web.Config: <?xml version="1.0" encoding="UTF-8″?> <configuration> <system.webServer> <rewrite> <rules> <rule name="cnUrl" stopProcessing="true"> <match url="!^(inde

  • 如何在IIS环境下配置Rewrite规则 图文

    URL 静态化可以提高搜索引擎抓取,开启本功能需要对 Web 服务器增加相应的 Rewrite 规则,且会轻微增加服务器负担.本教程讲解如何在 IIS 环境下配置各个产品的 Rewrite 规则. 一.首先下载 Rewrite.zip 的包,解压到任意盘上的任意目录. 各个产品的 Rewrite 规则包不同,请选择对应的产品下载对应的 Rewrite 规则. Discuz!6.0.0/6.1.0 的 Rewrite 规则下载地址:Rewrite.zip UCenter Home1.0.0 的 R

  • IIS环境下部署项目的详细教程

    分享IIS环境下部署项目的详细教程 1.环境部署 1.1安装IIS7 进入控制面板,选择"程序和功能",进入如下页面后,点击"Turn Windows features on or off". 找到World Wide Web Services,确保选中下面的项.按照向导指引,一步步完成IIS安装. 1.2检查.Net Framework 点击开始=>控制面板=>程序和功能,打开"程序和功能"对话框.检查.Net Framework是

  • 有了SSL证书,如何在IIS环境下部署https

    昨天各位小伙伴都很开心的领取了自己的SSL证书,但是大部分小伙伴却不知道如何部署,也许是因为第一次接触SSL这种高端的东西吧,不过个人觉得就是懒懒懒...本来小编也挺懒的,但是答应了各位小伙伴的,那么今天就教大家如何在IIS环境下部署HTTPS证书吧.(建议在PC端阅读) 1.首先我们要取走我们的证书,保存在我们本地的电脑里,然后复制到服务器即可. 2.取走后接下来干嘛?当然是打开文件看看里面有些什么啊.我们找到IIS那个压缩包并解压. 3.解析得到pfx文件,也就是我们需要部署域名的证书文件.

  • Nginx服务器下使用rewrite重写url以实现伪静态的示例

    经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用.比如在Apache中这样写规则 rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last; 而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号: rewrite "^/([0-9]{5}).html$" /viewthread.php?tid=$1 last; 同时将RewriteRule为Rewrit

  • IIS 环境下配置PHP5+MySql+PHPMyAdmin

    首先说明一下配置环境:操作系统:windows 2003 standard sp2PHP版本:5.2.5MySql版本:5PHPMyAdmin:2.11.6一.首先配置IIS,添加新的服务器扩展输入phpisapi.dll文件的路径,设置扩展状态为允许:二.设置网站属性,主目录为php网站所在的文件夹 输入phpisapi.dll文件的路径,注意有些php网站需要把"确认文件是否存在"这个选项去掉的,扩展名写.php:现在php已经可以在iis中运行了.写一个php测试文件1.php,

  • windows+IIS 环境下以Fastcgi方式配置php 5.3.3的方法

    还是感觉5.2及以前的版本配置比较方便,使用5.3配置后,我的apache居然挂了,不知道问题出在哪里,没找到解决方法,最后只能ghost还原了一下.第一步:iis6.0环境配置,这里不多介绍 第二步:下载php5.3.3的windows压缩版本:php-5.3.3-nts-Win32-VC9-x86.zip1.下载地址:http://windows.php.net/download/,选择VC9 x86 Non Thread Safe.有关PHP版本说明2.把php-5.3.3-nts-Win

  • IIS环境下快速安装、配置和调试PHP5.2.0

    记录过程以防遗忘,仅作参考. 一,在哪里获得PHP 打开PHP官方网站的下载页:http://www.php.net/downloads.php 选择"PHP 5.2.0 installer [18,879Kb] - 02 Nov 2006"链接进行下载 二,PHP5安装流程 打开安装文件,"Next"开始 选择接受协议 选择PHP安装路径,建议直接在磁盘根目录下,比如"C:\PHP\" 选择WEB服务器方式为"IIS 4+ISAPI

  • Windows环境下vscode-go安装笔记(不支持32位)

    一.介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: Colorization 代码着彩色 Completion Lists 代码自动完成(使用gocode) Snippets  代码片段 Quick Info 快速提示信息(使用godef) Goto Definition 跳转到定义(使用godef) Find References  搜索参考引用

  • Ubuntu15下mysql5.6.25不支持中文的解决办法

    apt-get install 安装的,不是源码包安装的mysql 1 修改mysql的配置文件 /etc/mysql/conf.d/mysql.cnf 在[mysql]的下方加入如下语句:(注:这个文件下没有配置,只有[mysql]) no-auto-rehash default-character-set=utf8 /etc/mysql/mysql.conf.d/mysqld.cnf 在[mysqld]下加入 socket = /var/run/mysqld/mysqld.sock port

随机推荐