IIS7中Web.config的rewrite实例分析讲解,教你看懂重写规则

本文详细介绍解释了IIS7 Web.config rewrite规则设置url重写功能,通过讲解实例的语法结构和标签用法,搭配一些简单的正则表达式,你可以写出符合自己要求的重写规则。

首先请注意,本文适用IIS7及以上rewrite重写功能

同样要注意的是,要实现在 Web.config 的rewrite重写功能,你必须先安装 URL_Rewrite 重写模块。

下面是本文要介绍的内容,如何通过 Web.config 的rewrite规则,设置url重写功能。

实例代码

<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.webServer>
      <rewrite>
        <rules>
          <rule name="rule1">
             <match url="^(.*)t/([0-9,a-z]*)" ignoreCase="false" />
             <action type="Rewrite" url="{R:1}/list.asp?id={R:2}" appendQueryString="false" />
          </rule>
          <rule name="rule2">
             <match url="^(.*/)*([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.html\?*(.*)$" />
             <action type="Rewrite" url="{R:1}/index.php?moduleid={R:2}&catid={R:3}&itemid={R:4}&page={R:5}" />
          </rule>
        </rules>
      </rewrite>
  </system.webServer>
</configuration>

解释

1、<rule>节点的name不能重复。

2、<match>里的url是一个正则表达式,实例里^(.*)t/([0-9,a-z]*)是一个常用的句式。

^匹配域名开头,如:http://www.webkaka.com/,注意域名后面有个斜杠/

(.*)匹配任何字符。

([0-9,a-z]*)匹配任何数字和字母。

因此,^(.*)t/([0-9,a-z]*) 可以匹配如下的访问网址(假如网站域名是www.webkaka.com):

  • http://www.webkaka.com/t/123
  • http://www.webkaka.com/news/t/a1

3、<action type="Rewrite" ...>表示执行的类型是重写,里面的url是实际网址,{R:1}/list.asp?id={R:2} 的解释如下:

{R:1}对应<match>里的url的第一个括号内容,{R:2}对应<match>里的url的第二个括号内容,如果有{R:3}{R:4},如此类推。

所以,如果假如用户访问的网址是

https://www.jb51.net/t/123
https://www.jb51.net/news/t/a1

那么,其对应的实际网址是

https://www.jb51.net/list.asp?id=123
https://www.jb51.net/news/list.asp?id=a1

4、按照上面的解释,你应该差不多能读懂实例的rule2重写规则了。

$,这是个结束符,表示匹配的url到此结束,后面没有其他字符了。

([0-9]+) 表示匹配任何数字。

\.html 表示匹配 .html

\?表示匹配一个问号?

特别要注意,反斜杠\是转义符,因为正则表达式里,一点.是表示匹配任何字符的意思,所以要加上反斜杠对其转义,这样才表示匹配的是一个点.

同样地,问号?也是一个元符号,它表示匹配前面的子表达式零次或一次,因此,也需要在其前面加上转义符\,这才表示匹配的是一个问号?

5、其他

ignoreCase="false" 表示不能忽略大小写,如果该值设为true,则表示忽略大小写。

appendQueryString="false" 表示不使用url参数。

总结

本文详细介绍解释了IIS7 Web.config rewrite规则设置url重写功能,参考实例的语法结构,你可以写出符合自己要求的重写规则,你需要了解一些简单的正则表达式的语法。

到此这篇关于IIS7中Web.config的rewrite实例分析讲解,教你看懂重写规则的文章就介绍到这了,更多相关IIS7中url重写的rewrite规则内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2022-11-18

IIS 7.5 配置伪静态

1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式: 2)部署好站点,并将此站点的应用程序池设置为nettest; 3)选中站点,切换到功能试图,找到 "服务器组件"-> "处理程序映射",双击之后,在打开窗口右侧的操作栏目下做如下设置: 4)"添加脚本映射":请求路径 .html ,可执行文件选择 C:\Windows\Microsoft.NET\Fra

IIS7.5使用web.config设置伪静态的二种方法

近几天公司里开发的项目有几个运行在IIS7.5上,由于全站采用的是伪静态,因此从网上找到两两种方法来实现.这两种方法各有优势:第一种比较灵活,只要把文件拷到根目录下,即可直接显示所有伪静态页面(适用于此伪静态规则的所有项目,如ThinkPHP),无需更改代码:第二种适合有子目录时的伪静态,比如一个网站下有多个子网站且都要使用伪静态,那么就考虑使用第二种方法了,第一种会报错误.两种方法,自己根据情况使用吧(当然,并不是适用所有项目,可以根据项目的伪静态规则自行调整).以下是代码: 第一种方法:we

IIS7伪静态web.config配置的方法和规则

以前在IIS6上配置伪静态还是挺复杂的,IIS7之后使用了插件机制,这让我们做伪静态变得简单多了. 一.服务器需要安装:URL Rewrite 扩展 下载地址:http://www.iis.net/download/URLRewrite 提示:虽然IIS7也可以使用以前在IIS6上那种老的方法来配置伪静态,但是我们不使用,因为那样的话就体现不出IIS7的优势了. 二.在 web.config 中配置伪静态规则 注意要点 1.参数用"()" 括起来 ,使用 {R:1}来获得参数 2.多个

iis6伪静态重写路径的配置步骤(.net项目)

第一步:在网站项目涨添加URLRewriter程序集的引用和FormRewriterControlAdapter程序集引用. 注:如果项目中有分页,那么需要添加"FormRewriterControlAdapter"程序集引用,否则不需要添加该引用. 下载地址:http://www.net.cn/service/ziliao/cpsc/200906/3842.html(万网/帮助中心(M享主机UrlRewrite组件和使用手册)) 第二步:配置webconfig文件: 注意事项:1.参

NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解

1.windows下的NodeJS安装是比较方便的(v0.6.0版本之后,支持windows native),只需要登陆官网(http://nodejs.org/),便可以看到首页的"INSTALL"按钮,直接点击就会自动下载安装了. 2.安装过程基本直接"NEXT"就可以了.(windows的安装msi文件在过程中会直接添加path的系统变量,变量值是你的安装路径,例如"C:\Program Files\nodejs"). 3.安装完成后可以使

Java 开发环境配置步骤(介绍)

背景 当要求系统启动一个应用程序时,系统会先查找当前命令是否是内部命令,若不是,则在当前目录下查找,如果仍没有找到,则在系统变量 Path 指定的路径去查找.JDK(Java Development Kit)包含了一系列开发工具,这些开发工具都在 JDK 的安装目录下,为了方便使用这些开发工具,我们有必要把 JDK 的安装目录设置了系统变量. 步骤 为了配置 JDK 的系统变量环境,我们需要设置三个系统变量,分别是 JAVA_HOME(可选),Path 和 CLASSPATH,下面是这三个变量的

windows8.1下Apache+Php+MySQL配置步骤

软件版本: apache:Apache 2.4.6 Win64   PHP:PHP 5.5 VC11 x64 Non Thread Safe   MySql:5.5 win64 Mysql安装: 双击运行,设置用户名.密码.编码(utf8). PHP配置: 1.解压下载的zip文件到一个目录,本教程中为:D:\server\php 2.复制文件php.ini-development并改名为php.ini: 3.在php.ini文件中搜索关键字php_mysqli.dll,去掉该行前面的";&qu

MySQL解压版配置步骤详细教程

mysql-5.7.14-winx64\bin配置到Path中 在解压路径下复制my-default.ini,修改名称为my.ini 在my.ini添加如下 [mysqld] basedir=C:\\software\Mysql\mysql-5.7.14-winx64 datadir=C:\\software\Mysql\mysql-5.7.14-winx64\data port=3306 basedir:是上述mysql的解压路径 datadir:后续初始化等数据都会保存在该目录下,在该文件目

IntelliJ IDEA 2017.1.4 x64配置步骤(介绍)

只是为了研究下idea这款编译器怎么使用.开门见山,说下如何配置这款编译器,不配置也能用,但是强迫症表示不服.下面直入正题: 下载与安装就不说了,除了更改安装目录外,没啥注意的地方,建议下载idea去官网下载,这里的"官网"不是下载站哦. 安装完毕后,通过桌面上的快捷方式定位到文件位置,用editplus打开该目录下的idea.properties文件,注意下图中的红框部分,默认是C盘,这里改为了D盘相关目录下,可以自行定义,其实最简单方案是到C盘用户文件夹下找到.IntelliJId

Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法

本文为大家解决了Mybatis-Spring 连接 MySQL8.0 的配置步骤出错问题,供大家参考,具体内容如下 环境以及配置文件 JDBC jar版本 : 8.0.11 Mybatis jar版本 : 3.4.6 Spring jar版本 : 4.3.18 Mybatis-Spring jar版本 : 1.3.1 配置信息文件 : db.properties Spring配置文件 : applicationContext.xml 测试路径如下图 配置db.properties 配置db.pr

vscode C++开发环境配置步骤详解(教你如何用vscode编写写C++)

用了一段时间的cb,Devc++,但一直感觉cb的高亮太差,而Devc++使用体验差(尤其是代码补全功能),换过vs2017,但是由于其太大了,卡顿十分明显,所以最终选择了vscode这款轻量级编译器.由于自己在配置c++开发环境时遇到了不少问题,因此特地写了这篇博文,希望能够帮助后来者快速实现c++环境配置. 步骤一:下载vscode 直接进入vscode官网下载即可,要注意选择与自己系统符合的版本. 官网地址:https://code.visualstudio.com/?wt.mc_id=D

mysql 8.0.22 zip压缩包版(免安装)下载、安装配置步骤详解

大家好,今天我在学习 MySQL 8.0.22安装及配置遇到了一些问题,特地将我整个安装过程分享出来希望可以帮助不会安装的小伙伴

mysql8.0.27配置步骤以及注意事项

目录 安装配置 解压安装包 编写MySQL配置文件 初始化MySQL数据库 安装mysql服务并启动 总结 下载网址: https://dev.mysql.com/downloads/ 选择这个 直接下载第一个,注意我们需要的是64还是32 击这里,开始下载 安装配置 解压安装包 我这里解压到的d盘 打开 编写MySQL配置文件 在解压目录下新建my.ini文件 将下面文本拷贝进my,ini文件中   /  /注意文件路径是你解压到的地址 [mysqld] # 设置3306端口 port=330