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

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

第一种方法:web.config

复制代码 代码如下:

< ?xml version="1.0" encoding="UTF-8"?>
< configuration>
    <system.webServer>
 <rewrite>
  <rules>
  <rule name="OrgPage" stopProcessing="true">
  <match url="^(.*)$" />
  <conditions logicalGrouping="MatchAll">
  <add input="{HTTP_HOST}" pattern="^(.*)$" />
  <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
  <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
  </conditions>
  <action type="Rewrite" url="index.php/{R:1}" />
  </rule>
  </rules>
 </rewrite>
    </system.webServer>
< /configuration>

 

第二种方法:web.config

复制代码 代码如下:

< ?xml version="1.0" encoding="UTF-8"?>
< configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="规则 1" stopProcessing="true">
                    <match url="^includes/(.*)" />
                    <action type="Rewrite" url="includes\/{R:1}" />
                </rule>
    <rule name="规则 2" stopProcessing="true">
                    <match url="^(blog)/includes/(.*)" />
                    <action type="Rewrite" url="{R:1}/includes\/{R:2}" />
                </rule>
                <rule name="规则 3" stopProcessing="true">
                    <match url="^(blog)/(.*).html(.*)" />
                    <action type="Rewrite" url="{R:1}/index.php\/{R:2}.html{R:3}" />
                </rule>
                <rule name="规则 4" stopProcessing="true">
                    <match url="^(.*).html(.*)" />
                    <action type="Rewrite" url="index.php\/{R:1}.html{R:2}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
< /configuration>

 

下面是补充:

IIS 7和IIS 7.5及以后的版本估计都会使用web.config来实现伪静态规则,于是我们以前的伪静态文件必须更改。网上找了一圈,还没有发现比较全面的web.config伪静态规则,于是我们这里整理一份,供初次使用的朋友参考。

实现普通页面、带一个数字参数页面和带两个参数页面的伪静态!

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<rewrite>

<rules>

 

<rule name="Index" stopProcessing="true">

<match url="^index.html" />

<action type="Rewrite" url="index.php" />

</rule>

 

<rule name="Rule1" stopProcessing="true">

<match url="^news_([0-9]+).html" />

<action type="Rewrite" url="news.php?nid={R:1}" />

</rule>

   

<rule name="Rule2" stopProcessing="true">

<match url="news_list_([0-9]+)_([0-9]+).html" />

<action type="Rewrite" url="news_list.php?nid={R:1}&page={R:2}" />

</rule>

 

</rules>

</rewrite>

</system.webServer>

</configuration>

IIS 7.5通过web.config实现301重定向的方法,将不带www的域名转向到带www的域名上!

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<rewrite>

<rules>

 

<rule name="Redirect" stopProcessing="true">

<match url=".*" />

<conditions>

<add input="{HTTP_HOST}" pattern="^chuangluo.com$" />

</conditions>

<action type="Redirect" url="http://www.chuangluo.com/{R:0}" redirectType="Permanent" />

</rule>

 

</rules>

</rewrite>

</system.webServer>

</configuration>

由于我们的网站使用了转义字符,因此在实际使用的时候,大家不可以直接复制以上代码。请复制粘贴到Dreamweaver等编辑器后,使用替换功能把双引号全部替换为英文状态下的双引号,然后再修改rule标签内的内容就可以了,跳转的地方请更改为自己的网址即可。

需要注意的地方是以前httpd.ini和.htaccess支持网址中两个参数用&符号链接,在web.config中是不支持的,需要将这个符号更改为&才能正常使用。由于我们目前只有一台这种类型的服务器使用经验,有可能存在不足,如有更多更全面的资料,欢迎交流学习!

 

时间: 2024-09-21 17:47:23

IIS7.5使用web.config设置伪静态的二种方法(转)的相关文章

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

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

IIS 7.5通过web.config设置伪静态规则方法

 is7.5下常见程序通过web.config实现伪静态新建一个以web.config命名的文件内容为 <?xml version="1.0" encoding="UTF-8"?> <configuration>     <system.webServer> <!--将下面的规则添加到这里-->     </system.webServer> </configuration>    记得后台的伪

急!如何通过web.config设置缓存

问题描述 有个以前的.net1.1版本的web程序,现在由于数据太多,多以导致执行效率降低.我想能不能通过web.config设置缓存,这样来减少访问数据库的次数,提高效率.可以吗?web.config如何设置?我主要是针对减少查询sql的次数. 解决方案 解决方案二:学习,关注解决方案三:up

一起谈.NET技术,更改SharePoint 的web.config设置的两种方式

MSDN上写的不是很明白,自己测试通过,记录一下: 方法一:通过创建描述一组 Web.config 修改的 XML 文件以声明方式注册 Web.config 项. 备注: 直接写一个webconfig.**.xml到14文件夹下的CONFIG中,在运行stsadm -o copyappbincontent 效果是一样的: 方法一有个缺点,会把所有WebApplication的web.Config都修改掉: 1.在sharepoint解决方案里添加14文件夹下的CONFIG文件夹,新建webcon

更改“.NET研究”SharePoint 的web.config设置的两种方式

MSDN上写的不是很明白,自己测试通过,记录一下: 方法一:通过创建描述一组 Web.config 修改的 XML 文件以声明方式注册 Web.config 项. 备注: 直接写一个webconfig.**.xml到14文件夹下的CONFIG中,在运行stsadm -o copyappbincontent 效果是一样的: 方法一有个缺点,会把所有WebApplication的web.Config都修改掉: 1.在sharepoint解决方案里添加14文件夹下的CONFIG文件夹,新建webcon

iis7 配置web.config实现伪静态实现代码

在 IIS7中我们不再需要安装其他组件,通过在 web.config 进行简单的配置即可实现 URL 的伪静态.方法如下: 在 web.config 配置文件的 configuration 节点中加入下边的代码:  代码如下 复制代码 <system.webServer>     <rewrite>         <rules>             <rule name="rulename">                 <

Web.config设置system.webServer

一般情况在iis部署web网站都非常顺利,但是遇到复杂环境,或者被配置过又正在使用的时候,就束手无策了, 因为对IIS和Web.config不熟悉,不知其中要害,导致浪费一天甚至更久的时间去处理一个可能是不起眼的配置问题 本文主要和大家共同探讨下Web.config的system.webServer节点配置,如有错误之处,劳烦指点下 环境:IIS 7.0及以上 一.总览 system.WebServer 是 configuration 节的子级.有关更多信息,请参见 IIS 7.0: syste

Asp.Net Session的三种方法及Web.Config设置

转载:http://user.gw-ec.com/login/safelog/redirectt?session=so%2f%2bSjyZURMOe54xgk%2bUhL2CgGqDjOKEbYwZSL9ezrL%2bfXi0p6o6nQ%3d%3d&url=http%3a%2f%2fgts.gw-ec.com%2f 因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Serve

asp.net夜话之十一:web.config详解(二)

<error>子节点 在<customErrors>节点下还包含有<error>子节点,这个节点主要是根据服务器的HTTP错误状态代码而重定向到我们自定义的错误页面,注意要使<error>子节点下的配置生效,必须将<customErrors>节点节点的Mode属性设置为"On".下面是一个例子: <customErrors mode="On" defaultRedirect="Generic