在用Urlrewrite.dll实现伪静态时,真实静态无法访问!

asimplefire 2009-10-31 04:48:11
我在IIS里"应用程序扩展"里“添加" .html的映射,而正常的html将无法访问。
为此,我将站点下所有的.html后缀名该成了.htm ,以此来区分伪静态与真正的静态。
可是,现在的问题是,那些虚拟主机提供商,好像都支持以“.htm”与“.html”的伪静态,也就是说,他们在IIS里"应用程序扩展"里都“添加".htm与 .html的映射,那么正常的“.html”与“htm”岂不是都不能访问了???
那么如何做才能在支持“.htm”与“.html”的虚拟主机上实现伪静态与真正的静态正常访问呢?
应该在HTTPModules怎么样写,让IIS交给aspnet_isapi.dll的.html与.htm的访问请求直接取读实际的静态文件???
在此请教做过伪静态的高手,THS!!!
...全文
1470 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljcok 2011-03-12
  • 打赏
  • 举报
回复
碰到这种情况了,修改配置文件的方法可以。谢谢了!!
alex1987214 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kanadeng 的回复:]
我弄出来了。。。在Web.config加2段话就可以调用了。。。

XML code
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

<httpHandl……
[/Quote]

这个才是真确的
kanadeng 2009-11-01
  • 打赏
  • 举报
回复
我弄出来了。。。在Web.config加2段话就可以调用了。。。
<compilation>
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
</buildProviders>
</compilation>

<httpHandlers>
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>


IIS配置没错的
asimplefire 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jgood 的回复:]
vs的虚拟服务器是不需要映射的,因为vs虚拟服务器默认把所有的后缀都当作动态资源来处理的。

我当然是在iis里浏览的。
[/Quote]
你是在global.asax里的Application_BeginRequest写的啊!
这个跟用Urlrewrite.dll实现伪静态时写正则也差不多啊?为什么我的不行呢?
难道IIS里配置有错误?
asimplefire 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wuyq11 的回复:]
去除html文件检查是否存在
设置html为aspx解析
编写规则


参考
[/Quote]
我是已经去除了html文件检查是否存在的
你所说的设置html为aspx解析,是指什么。是再编写一则通用规则吗?
rendehua380 2009-10-31
  • 打赏
  • 举报
回复
在iis应用程式配置.html文件
JGood 2009-10-31
  • 打赏
  • 举报
回复
vs的虚拟服务器是不需要映射的,因为vs虚拟服务器默认把所有的后缀都当作动态资源来处理的。

我当然是在iis里浏览的。
wuyq11 2009-10-31
  • 打赏
  • 举报
回复
去除html文件检查是否存在
设置html为aspx解析
编写规则


参考
asimplefire 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jgood 的回复:]
我试了一下我以前写的网站,里面也用到了fck,把url重定向的后缀改成html,也没问题呀。
[/Quote]
你是不是用vs里的虚拟服务器,浏览的呀?
你发布网站后,配置好域名,用IIS搭建起来,在本机的IE里访问一下!!!
JGood 2009-10-31
  • 打赏
  • 举报
回复
<!-- 新闻浏览 -->
<add fromUrl="^/(\d+)/News/\.html$" toUrl="/NewsView.aspx?Id=$1"/>

iis里添加了.html到aspnet_iisapi.dll的映射。

我试了一下,浏览页面正常,打开fck也正常。我这里的url重定向都是自己写的,没有使用第三方的组件。
asimplefire 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jgood 的回复:]
我试了一下我以前写的网站,里面也用到了fck,把url重定向的后缀改成html,也没问题呀。
[/Quote]
这位仁兄,你的IIS是怎么配置的?
JGood 2009-10-31
  • 打赏
  • 举报
回复
我试了一下我以前写的网站,里面也用到了fck,把url重定向的后缀改成html,也没问题呀。
JGood 2009-10-31
  • 打赏
  • 举报
回复
我简单的建了一个工程试了一个:
工程中只有两个页面:
Default.aspx:只在Page_Load中,写了两行代码:
if (!string.IsNullOrEmpty(Request.QueryString["id"])) {
Response.Write(Request.QueryString["id"]);
}

index.html: 随便显示一些东西。

在global.asax中,在BeginRequest的时候,重写url:
protected void Application_BeginRequest(object sender, EventArgs e) {
var url = HttpContext.Current.Request.Url.AbsolutePath;

var match = Regex.Match(url, @"^/(\d+)\.html$");
if (match.Success) {
HttpContext.Current.RewritePath(
string.Format("/Default.aspx?id={0}", match.Groups[1].Value));
}
}

在iis中,添加对.html的映射。

测试:
http://localhost/123.html // 相当于default.aspx?id=123
http://localhost/123a.html // 找不到页面
http://lobalhost/index.html // 显示index.html
asimplefire 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kanadeng 的回复:]
我也是这个问题。。。FCK的静态fckeditor.html不能加载。。。

显示取消操作。。

正则因该没错吧。。。

你们是怎么写的贴段代码交流下
[/Quote]
我也用到了fck,刚开始也是不行的,最后是把fck的表态页面的后缀“.html”全部改成了“.htm”,并且源文件里的所有.html连接地址也一样改成.htm ,在IIS里只映射.html,而不映射.htm ,这个时间fck就能正常用了!

[Quote=引用 1 楼 zhoukang0916 的回复:]
在web-config里面设置的时候

正则应该要匹配.aspx跟html
[/Quote]
web.config里的正则当然没有问题了,在自己的服务器上都能使用的。
现在这些伪表态都是能用的,我自己的服务器IIS里的aspnet_isapi.dll只映射了.html,都是正常可用的。
马上要上传 的空间了,那些虚拟主机都是映射了.html与.htm ,像这样的话,.htm与.html页面都会被IIS交给aspnet_isapi.dll处理,从而会造成正常的表态页面无法访问的!
kanadeng 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jgood 的回复:]
如果有个url,如/123.html,你把它重定向到page.aspx?id=123
这里123必须是数字,那么对于/123a.html,你就不能重定向到page.aspx?id=123a。万一不幸的是,在page.aspx里,获取到id是123a,不是整数,你认为是非法请求,你就把这个页面直接Response.Clear(); Response.End()了,那么这样就出现楼主所说的问题了。

像/123a.html这样的请求,asp.net不要作任何处理,直接放过。

[/Quote]

不是的。。是原文件结尾是html的文件不能加载。。其他的文件都可以。。只要一加载就不显示。
正则也是写对的。。按照规则的正常显示都是可以的。
kanadeng 2009-10-31
  • 打赏
  • 举报
回复
没用的就是html扩展ISAPI添加后才出现这个问题的
happy664618843 2009-10-31
  • 打赏
  • 举报
回复
Iis中把所有映射删除留下html aspx解析文件
JGood 2009-10-31
  • 打赏
  • 举报
回复
如果有个url,如/123.html,你把它重定向到page.aspx?id=123
这里123必须是数字,那么对于/123a.html,你就不能重定向到page.aspx?id=123a。万一不幸的是,在page.aspx里,获取到id是123a,不是整数,你认为是非法请求,你就把这个页面直接Response.Clear(); Response.End()了,那么这样就出现楼主所说的问题了。

像/123a.html这样的请求,asp.net不要作任何处理,直接放过。
kanadeng 2009-10-31
  • 打赏
  • 举报
回复
我也是这个问题。。。FCK的静态fckeditor.html不能加载。。。

显示取消操作。。

正则因该没错吧。。。

你们是怎么写的贴段代码交流下
JGood 2009-10-31
  • 打赏
  • 举报
回复
伪静态的.html页面与物理存在的html可以共存。其实要看楼主url重定向规范怎么写了。
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧