Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iis 使用hashtags重写URL_Iis_Url Rewriting - Fatal编程技术网

Iis 使用hashtags重写URL

Iis 使用hashtags重写URL,iis,url-rewriting,Iis,Url Rewriting,我正在使用IIS URL重写模块通过重写映射和重写规则(不是重定向),用友好URL屏蔽我的内部URL。这是我的重写图: <rewriteMap name="HashTest"> <add key="/nohash" value="/nohash.aspx" /> <add key="/hash1" value="/hashtest.aspx#hash1" /> </rewriteMap> 这是我的重写规则: <rul

我正在使用IIS URL重写模块通过重写映射和重写规则(不是重定向),用友好URL屏蔽我的内部URL。这是我的重写图:

<rewriteMap name="HashTest">
     <add key="/nohash" value="/nohash.aspx" />
     <add key="/hash1" value="/hashtest.aspx#hash1" />
</rewriteMap>

这是我的重写规则:

<rule name="Rewrite rule1 for HashTest">
       <match url=".*" />
       <conditions>
           <add input="{HashTest:{REQUEST_URI}}" pattern="(.+)" />
       </conditions>
       <action type="Rewrite" url="{C:1}" />
</rule>

这适用于没有哈希标记的URL,因此每次我查询www.mysite.com/nohash时,它会显示www.mysite.com/nohash.aspx中的内容,并在浏览器上更改URL

现在,当我试图重写到一个包含hashtag的URL时,我得到了一个404错误,例如www.mysite.com/hash1应该只显示/hashtest.aspx#hash1中的内容,但我只得到了一个404

现在,如果我将规则操作类型更改为重定向,它确实成功地进行了重定向,因此我不知道为什么它不能与“重写”一起工作

我知道hashtag不会在请求时发送到服务器,但是如果我的重写映射是向后的,比如
,这是有意义的


关于重定向为什么与hastags一起工作而重写不起作用,有什么见解吗?。我不喜欢IIS重定向,如果您有其他模块或方法,我可以使用它,这是非常受欢迎的

哈希符号(正式称为片段标识符)后的部分是URL的客户端部分。它永远不会发送到服务器。这就是为什么它不适用于重写,而只适用于重定向。重写规则将匹配,但IIS实际上会尝试打开名为
hashtest.aspx#hash1
(即扩展名为
.asp#hash1
)的文件。由于扩展名未链接到ASP.NET,因此此文件不会作为普通ASP页处理。而且很可能它的内容根本不会显示,因为IIS默认配置为只允许对已知扩展的请求