IIS中如何配置asp伪静态网页
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
url重写(伪静态)IIS配置图解-^特殊П佀命^-博客园
url重写(伪静态)IIS配置图解
伪静态是指动态网页通过重写URL的方法实现去掉动态网页的参数
伪静态的作用:
一)、利于搜索引擎的抓取
二)、不变应完变
三)、防止某些黑客恶意攻击
四)、方便访问者使用
通过IIS创建虚拟目录,新建网站放在该目录下面;
IIS配置:
在选中的网站,点击右键->属性选择配置:
把上面两个文本框的值复制走保存在记事本里面点击确定
注意下面几个勾了的地方
把刚才复制的值粘贴在上面,注意添加扩展名.html,去掉检查文件是否存在复选:
点击确定 IIS就配置Ok啦。
IIS 7.5 配置伪静态详细图文教程之前在IIS 6.0配置过伪静态:httpHandler实现.Net无后缀名Web访问。
现在服务器硬件升级了,操作系统也升级成了Windows Server 2008,好吧。
我们也来设置下IIS 7.5的伪静态1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式;2)部署好站点,并将此站点的应用程序池设置为nettest;3)选中站点,切换到功能试图,找到 '服务器组件'-> '处理程序映射',双击之后,在打开窗口右侧的操作栏目下做如下设置:4)'添加脚本映射':请求路径 .html ,可执行文件选择C:\Windows\\Framework\v2.0.50727\aspnet_isapi.dll ,如果是4.0,则为C:\Windows\\Framework\v4.0.30319\aspnet_isapi.dll,名称随意;5)'添加通配符脚本映射':请求路径 * ,可执行文件为:C:\Windows\\Framework\v2.0.50727\aspnet_isapi.dll,名称随意;6)'添加托管处理程序':请求路径 * ,可执行文件:System.Web.UI.PageHandlerFactory,名称随意;7)打开站点切换到功能试图,找到 '服务器组件'->'模块',双击之后,在打开窗口右侧的操作栏目中,点击'添加托管模块',类型URLRewriter.ModuleRewriter,并且把'仅针对向 应用程序或托管处理程序发出请求调用' 选中;8)最后,找到我们第一步建立的应用程序池nettest,将托管管道模式设置为经典模式。
IIS中如何配置asp伪静态网页伪静态网页:顾名思义, 就是非真实静态网页,只是将动态网页的url映射到静态形式的url. 通常这样做是为了增强搜索引擎的友好性.但是有的朋友为了实时的显示一些信息.或者还想运用动态脚本解决一些问题.不能用静态的方式来展示网站内容.但是这就损失了对搜索引擎的友好面.怎么样在两者之间找个中间方法呢,这就产生了伪静态技术.就是展示出来的是以.html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的下面我们来看一下在IIS中设置伪静态的方法和步骤:1、在IIS的Isapi上添加这个筛选器,筛选器名称re,可执行文件选择Rewrite.dll;2、设置httpd.ini文件RewriteRule /news/(\d+)\.html /jsp/news\.jsp\?id=$1 [N,I]表示将news.jsp?id=95 转换成news/95.html以此类推,如果你有更多的参数,则增加相应的(\d+),而后面的id=$1,则增加id=$2,等等。
目前较为普遍的动态网页包括asp,php,jsp,shtml,jhtml,cgi......甚至还有一些自己定义的,比如:aspx,do,index,hello等等。
表现形式为:news.asp?id=95。
建议读者通过re_write将其转换成news/95.html,以便于google 对改网页的识别。
re_write是iis里的一个模块,下载地址:/blog/upload/re_write.rar 当需要将news.jsp?id=95的映射成news/95.html时,只需设置httpd.ini文件:RewriteRule /new如果你在处理数据翻页,那么写法是:More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)表现形式:More_1_95.html如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:More_3_95.html,以此类推。
IIS7伪静态web.config配置的⽅法和规则以前在IIS6上配置伪静态还是挺复杂的,IIS7之后使⽤了插件机制,这让我们做伪静态变得简单多了。
⼀、服务器需要安装:URL Rewrite 扩展提⽰:虽然IIS7也可以使⽤以前在IIS6上那种⽼的⽅法来配置伪静态,但是我们不使⽤,因为那样的话就体现不出IIS7的优势了。
⼆、在 web.config 中配置伪静态规则注意要点1.参数⽤“()” 括起来 ,使⽤ {R:1}来获得参数2.多个参数中间⽤ & 分割切记不能写⼀样复制代码代码如下:<?xml version="1.0"?><configuration><system.webServer><rewrite><rules><!--301重定向把不带3W的域名定向到带3W--><rule name="Redirect" stopProcessing="true"><match url=".*" /><conditions><add input="{HTTP_HOST}" pattern="^$" /></conditions><action type="Redirect" url="https:///{R:0}" redirectType="Permanent" /></rule><!--⾸页--><rule name="rD"><match url="^$" /><action type="Rewrite" url="Default.aspx" /></rule><!--产品列表--><rule name="rP"><match url="^product/$" /><action type="Rewrite" url="ProductList.aspx" /></rule><!--产品列表第⼏页--><rule name="rPL"><match url="^product/list-([0-9]*).html$" /><action type="Rewrite" url="ProductList.aspx?page={R:1}" /></rule><!--产品类别列表--><rule name="rPT"><match url="^product/([A-Za-z0-9-]*)/$" /><action type="Rewrite" url="ProductList.aspx?typeUrl={R:1}" /></rule><!--产品类别列表第⼏页--><rule name="rPTL2"><match url="^product/([A-Za-z0-9-]*)/list-([0-9]*).html$" /><action type="Rewrite" url="ProductList.aspx?typeUrl={R:1}&page={R:2}" /></rule><!--产品详细--><rule name="rPd"><match url="^product/([A-Za-z0-9-]*)/([A-Za-z0-9-]+).html$" /><action type="Rewrite" url="ProductDetail.aspx?typeUrl={R:1}&url={R:2}" /></rule></rules></rewrite></system.webServer> </configuration>。
从网上找到的几种静态化方法,时间长了,也忘了出处,不过大家还是可以学习一下。
几种静态化方法:1.使用IIS_ReWrite静态化处理,适合PHP、ASP、程序。
A.isapi_rewrite.isapi_rewrite分精简(lite)和完全(full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理,精简版下载地址ISAPI_Rewrite2.7For IIS。
B.打开IIS,选择网站,右键菜单属性,添加过滤器。
如图:C.打开文件:开始菜单->程序->Helicon->ISAPI_Rewrite->httpd.iniD.将RewriteRule/user/(\d+).htm/user.asp\?id=$1[I,O]加入内容中。
E.在浏览器地址栏输入:/user/1.htm页面将指向/user.asp?id=1。
2.使用虚拟主机的ASP网站,需要使用404错误操作实现静态化。
A.下载404处理页面。
404_Rewrite_GB2312.rarB.解压后将Rewrite.asp、error.asp放在网站的根目录。
C.设置网站自定义错误信息如图:D.在error.asp里添加处理命令:Call ParaseUrl("/(\d+).htm","/user.asp?User=$1")E.在需要静态化的实例user.asp页面中添加代码:<!--#include virtual="/rewrite.asp"-->引用文件<%response.write"<li>Para="&session("Para")‘变量是通过Session传递‘原来使用request(“user”)获得参数的命令,需要修改成request_(“user”)调用response.write"<li>request_(""User"")="&request_("User")‘原用request.querystring(“user”)获得参数命令,修改为request__.querystring(“user”)调用response.write"<li>request__.querystring(""User"")="&request__.querystring("User")%>F.在地址栏输入/1.htm,实际调用/user.asp?user=13.使用开发的网页程序,使用URLRewriter.dll实现静态化。
1.下载UrlRewrite(/Simcoder/URLRewriter.rar)将它放在应用程序bin目录下并引用。
2.配置IIS 选择主目录然后点击配置找到“插入”:C:\WINDOWS\\Framework\v2.0.50727\aspnet_isapi.dll 在C盘找到aspnet_isapi.dll 文件找到该aspnet_isapi.dll 文件去掉确认文件是否存在然后扩展名改为:.html3.配置WebConfig<?xml version="1.0" encoding="utf-8"?><configuration><configSections><!--****************** --><section name="RewriterConfig"type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /><!--******************* --></configSections><system.web><httpHandlers><remove verb="*" path="*.asmx"/><!--****************** --><add verb="*" path="*.aspx"type="URLRewriter.RewriterFactoryHandler, URLRewriter"/><add verb="*" path="*.html"type="URLRewriter.RewriterFactoryHandler, URLRewriter"/><!--**************** --></httpHandlers><httpModules><add name="ScriptModule"type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules></system.web><!--****************** --><RewriterConfig><Rules><RewriterRule><LookFor>~/index.html</LookFor><SendTo>~/index.aspx</SendTo></RewriterRule></RewriterConfig><!--***************** --></configuration>4.正则表达式<RewriterRule><LookFor>~/(.*).html</LookFor><SendTo>~/$1.aspx</SendTo></RewriterRule>(.*):应用于根目录下所有页面;$1:与(.*)对应,也就是url显示的是什么对应的就是哪个aspx,如index.html对应index.aspx有时候我们需要多个参数<RewriterRule><LookFor>~/ProductClassList-(.[0-9][0-9][0-9]*)-(.*).html</LookFor><SendTo><![CDATA[~/productclasslist.aspx?cn=$1&c=$2]]></SendTo></RewriterRule>如果你的文本含有大量的"<" 或"&"字符—就象程序码中经常的那样— XML元素可以被定义为一个CDATA部分。
IIS7.0设置url重写成html(伪静态)前提条件:先把IIS应用程序池的托管管理道模式为集成(为了可以做第3,4步)首先在IIS中的站点里,找到处理程序映射。
双击进去1、添加脚本映射(路径:*.html 可执行文件%windir%Frameworkv2.0.50727aspnet_isapi.dll 名称:任意,比如Html )2、添加通配符脚本映射(路径:* 可执行文件:C:\Windows\\Frameworkv2.0.\50727\aspnet_isapi.dll 名称:任意,比如All)3、托管处理程序映射(路径:*.html 可执行文件:System.Web.UI.PageHandlerFactory 名称任意比如Html-Integrate)4、IIS中找到模块(双击进去)-->添加托管模块---->(名称:任意如All 类型:URLRewriter.ModuleRewrite把仅针对向 应用程序或托管处理程序发出请求调用勾上5、将应用程序池的托管管理道模式为经典以上步骤是针对32位电脑系统所写,如果您的电脑是64位系统,需要再设置如下一个步骤选择重写站点对应的应用程序连接池,高级设置,启用32位应用程序,设为true上面设置完,重写成HTML肯定成功,但是II7或以上有个bug,也就是真实存在的html 没有办法访问,下面我给大家提供一个可以解决的办法,也就是在webconfig里加下配置就能解决:<system.web><httpHandlers><add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/></httpHandlers><compilation debug="true" targetFramework="4.0"><buildProviders><add extension=".html" type="pilation.PageBuildProvider"/></buildProviders></compilation><globalization requestEncoding="utf-8" responseEncoding="utf-8" /><httpRuntime requestValidationMode="2.0" /><pages validateRequest="false" /></system.web>上面加红色的就是了。
Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法1、将下载的IIS Rewrite 组件解压,放到适当的目录(如 C:Rewrite)下,IIS Rewrite 组件下载/download-isapi_rewrite.htm , IIS Rewrite 简化版组件下载 /soft/71446.htm ,下载下来解压后不用安装拷到目1、将下载的IIS Rewrite 组件解压,放到适当的目录(如 C:Rewrite)下,IIS Rewrite 组件下载/download-isapi_rewrite.htm,IIS Rewrite 简化版组件下载/soft/71446.htm,下载下来解压后不用安装拷到目录下设置好即可使用。
注:IIS Rewrite简单使用方法介绍:一个功能强大的URL处理引擎,功能和Apache的mod_Rewrite类似,这个是For IIS版本可以把像list.asp?id=234 这样的链接映射成list/234.html 这样就有利于在GG中的排名完全版(Full)与简化版(Lite)的最大的区别在于可以让每个站点自定义URL重写规则(Rewrite Rule),也就是只要将写好的httpd.ini放在站点根目录,就能使用了。
安装说明:下载后可以解压出 ISAPI_Rewrite.dll ,httpd.ini 这两个文件放到某个文件夹下面,然后在 IIS 站点属性的 ISAPI 中加载 ISAPI_Rewrite.dll 就可以了, httpd.ini 是配置文件里面有例子。
如果加载不成功的话请给 ISAPI_Rewrite.dll 安全属性为完全。
2、在“IIS管理器”里选择网站,右键,属性。
3、选择“ISAPI”,点击“添加”。
4、填入筛选器名称,如“rewrite”。
5、可执行文件下方点击“浏览”,选择刚才解压的Rewrite组件位置,Rewrite.dll。
1.IIS设置静态规则:v4.0.30319
打开IIS,右击“默认网站”(或者是其它的网站),选择“属性”打开网站设置,在设置界面选择“主目录”标签,点击“配置”,再点击“Add/添加”,在“Executable/执行”填入:(v4.0.30319)
C:\WINDOWS\\Framework\v4.0.30319\aspnet_isapi.dll 在扩展名文本框中填入:.html
在“Limit to/限制为”里填入:
GET,HEAD,POST,DEBUG
并且取消勾选“check that file exists/确认文件是否存在”,
最后点确定保存即可。
2.IIS 6支持伪目录形式
在IIS里右击相应的网站,选择“属性”,进入设置界面,在设置界面里点击标签“主目录”,在“主目录”设置界面点击“配置”进入,在“映射”面板点击下面的“插入”,输入“c:\windows\\framework\v4.0.30319\aspnet_isapi.dll”,在“确认文件是否存在”前面的勾去掉。
.net 的是通过它一个aspnet_isapi.dll来静态与重写的,而不是httpd.ini
区别于其它的php,jsp的系统
只需要配置一下即可,
静态与重写系统里已经有了,
没有配置,有静态重写规则也没用,。
IIS实现伪静态不需要Rewrite组件现在的iis站点都可以自定义404错误页面,打开本机IIS网站,查看属性-自定义错误,找到404错误,双击修改其消息类型为URL,Url设置为网站根目录下文件的绝对路径.譬如设置网站更目录下404.asp 设置url为 /404.asp,主要是修改我们修改404.asp原理如下比如网站首页 http://www.**********.com/index.asp,文章的url形式如下http://www.**********.com/Class/show.asp?ID=12345,写程序时候只要故意把http://www.**********.com/Class/show.asp?ID=12345 写成,http://www.**********.com/show/12345.html其实并不存在 http://www.**********.com/show/12345.html这个页面. 用户要点击这个超连接的话, 就会自动调用404错误页面只要报404错误页面定义为asp页面就可以了.其中加入获得 show.asp?ID=12345 页面的Id 12345 然后利用小偷程序获取改页面的内容显示在 http://www.**********.com/show/12345.html 页面上.其中最加了截取带有/show/和.html的页面如果不少就转倒正常的err.html错误页面测试地址http://www.**********.com/show/12345.htmlhttp://www.**********.com/Class/show.asp?ID=12345两个页面是一样的.下面是 404错误页面的代码自己要编写其它应用也行,下面简单介绍下:上面是404错误页面的代码,获取当前URL值的语句,例如:原来动态地址:http://www.*****.com/post.asp?id=*随便输入个地址:http://www.*****.com/post-id-*.html页面会返回值:404;http://www.*****.com:80/post-id-*.html我们可以利用replace把404;http://www.*****.com:80/post-id-过滤,URL值就只剩下*.html了,再利用split把它拆开,以.为主,那最后就是,sURL(0)等于获取*的值,sURL(1)等于获取html的值,我们把原先post.asp 文件代码把获取id值改为sURL(0),然后把代码保存在404错误页面,这就实现网站伪静态功能了最后如果你使用的vps和主机是没有问题的,如果是空间的就需要有自定义404的功能不然就没办法使用了。
IIS中如何配置asp伪静态网页
伪静态网页:顾名思义, 就是非真实静态网页,只是将动态网页的url映射到静态形式的url. 通常这样做是为了增强搜索引擎的友好性.
但是有的朋友为了实时的显示一些信息.或者还想运用动态脚本解决一些问题.不能用静态的方式来展示网站内容.
但是这就损失了对搜索引擎的友好面.怎么样在两者之间找个中间方法呢,这就产生了伪静态技术.
就是展示出来的是以.html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的
下面我们来看一下在IIS中设置伪静态的方法和步骤:
1、在IIS的Isapi上添加这个筛选器,筛选器名称re,可执行文件选择Rewrite.dll;
2、设置httpd.ini文件RewriteRule /news/(\d+)\.html /jsp/news\.jsp\?id=$1 [N,I]表示将news.jsp?id=95 转换成news/95.html以此类推,如果你有更多的参数,则增加相应的(\d+),而后面的id=$1,则增加id=$2,等等。
目前较为普遍的动态网页包括asp,php,jsp,shtml,jhtml,cgi......甚至还有一些自己定义的,比如:aspx,do,index,hello等等。
表现形式为:news.asp?id=95。
建议读者通过re_write将其转换成news/95.html,以便于google 对改网页的识别。
re_write是iis里的一个模块,下载地址:/blog/upload/re_write.rar 当需要将news.jsp?id=95的映射成news/95.html时,只需设置httpd.ini文件:RewriteRule /new
如果你在处理数据翻页,那么写法是:
More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)
表现形式:More_1_95.html
如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:
More_3_95.html,以此类推。
不过你需要在httpd.ini文件中增加以下代码:
RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]
如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:
RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]
翻页处理表现形式是:More_1_95.html
以上就是伪静态的设置方法,大家可以自己参考一下,看看效果!
下面我们再来讲一下伪静态的利与弊:
当然犹如一篇文章的作者所说的:"如果流量稍大一些使用伪静态就出现CPU使用超负荷,我的同时在线300多人就挂了,而不使用伪静态的时候同时在线超500人都不挂,我的IIS数是1000。
”
确实是这样的,由于伪静态是用正则判断而不是真实地址,分辨到底显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,确实是伪静态最大的弊病。
我们应该选择伪静态还是真静态?
1、使用真静态和假静态对SEO来说没有什么区别
2、使用真静态可能将导致硬盘损坏并将影响论坛性能
3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
4、最重要的一点,我们要静态是为了SEO
所以:
1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
2、既然真伪静态的效果一样,我们就可以选择伪静态了。
3、但是伪静态大量使用会造成CPU超负荷。
4、所以我们只要不大量使用就可以了。
5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
7、谢谢大家耐心看我写的文章。
8、有何不解的地方或是有不同的看法欢迎提出。