这种问题主要出现在使用应用程序级别的地址重写。如果你将一个动态的地址重写成虚拟的其它扩展名或者不带扩展名的地址,通常在IIS5.1和II6.0中,访问这样一个实际不存在的地址,首先会被Web服务器返回404;所以我们,要让Web服务器在执行地址的请求之前,不确认地址是不是存在的。
具体操作如下:
1、打开IIS服务管理器
2、选择做过地址导向(通常是UrlRewrite或Routing)的网站或虚拟目录
3、在右键“属性”界面中选择“主目录”(网站)或“虚拟目录”(虚拟目录)选项卡;单击配置按钮,并在“应用程序配置”界面的“映射”选项卡的“插入通配符应用程序映射(执行顺序)”处点击“插入”,然后选择.net的isapi,通常是“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”
4、最重要的一步,去掉“确认文件是否存在”前面的勾,然后确定。
如果是小范围的,或者有具体的扩展名的映射,建议选择扩展映射,就是在添加一个指定的扩展名,然后指定处理的此类文件的扩展程序。确定之前,同样需要去掉“确认文件是否存”前面的勾。
例如,我要将“/news/default.aspx?id=123”这样的地址重写为“news/123.html”这样的形式,那么我就要在那个网站属性的配置就加入对“.html”扩展名的映射,当然,仍然是需要“aspnet_isapi.dll”这个扩展来进行处理。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 iis6.0映射配置
IIS配置:网站->属性->目录->配置(G)...->映射->应用程序扩展->添加
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
扩展名:.html
动作:限制为 GET,HEAD,POST,DEBUG
脚本引擎:选中
确认文件是否存在:不选
主目录里点配置,选择插入
c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
确认文件是否存在 前的勾号去掉
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2 iis5.1映射配置BUG
微软的解释:http://support.microsoft.com/?id=317948#top
当您在运行 Microsoft Windows XP 专业版的计算机上 Internet Information Services (IIS) 中添加应用程序映射确定 按钮是不可用的后键入或浏览到.exe 文件或.dll 文件的路径,然后键入文件扩展名。
要变通解决此问题,请按照下列步骤操作:
- 用鼠标右键单击单独的网站或 网站 文件夹,然后单击 属性。
- 在 主目录 选项卡上单击 $ 配置。
- 在 应用程序配置,下单击 添加,然后单击 映射 选项卡。
- 添加/编辑应用程序扩展名映射 对话框打开的状态下,单击 浏览 选择从 Web 服务器上的本地路径的.exe 文件或.dll 文件。
注意您必须在 可执行文件 的文本框中键入一个有效的文件路径或 确定 按钮仍不可用。要确保您输入一个有效的路径,最简单的方法是通过使用浏览 按钮选择文件。 - 可执行文件 的文本框中显示该路径后,单击在 可执行文件 文本框中初始化该路径。
- 单击 扩展 空间,然后键入文件扩展名。
注意您必须在 扩展名 文本框中输入句点 (.) 前面的扩展名或 确定 按钮仍不可用。 - 当 确定 按钮将变为活动状态,单击 确定 以继续。
IIS7.0
处理程序映射->添加脚本映射
请求路径:.html
可执行文件:c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
请求限制->谓词:限制为 GET,HEAD,POST,DEBUG