如何解决IIS网址重写规则以隐藏所有内容
在IIS中,我有一个带有DNS条目的特定站点,该条目是我拥有的另一个站点的子域。为了方便起见,我被要求隐藏所有URL路径。我不确定它会对服务器端的查询字符串产生什么影响。
无论如何,对于该站点,我只有1个名为home
的应用程序,它是asp.net站点本身。第一个问题是用户需要输入www.sub.mysite.com/home/
才能访问它,但我们只想使用www.sub.mysite.com
。所以我想出了以下规则,该规则只是将请求跳转到该文件夹
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
<rewrite>
<outboundRules>
<rule name="Whatever" preCondition="HTMLCode" stopProcessing="true">
<match filterByTags="A,Img,Link,Script" pattern="^/home/(.*)$" />
<action type="Rewrite" value="/{R:1}" />
</rule>
<preConditions>
<preCondition name="HTMLCode">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
<rules>
<rule name="Incoming" stopProcessing="true">
<match url="^(.*)$" />
<action type="Rewrite" url="home/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
这条规则一开始似乎很奏效,但是我们很快注意到有些问题与要求不符。如果我去联系页面(一个例子),这就是问题所在:
我本来拥有的东西:www.sub.mydomain.com/home/en/contact.aspx
我的规则是:www.sub.mydomain.com/en/contact.aspx
他们想要的是:www.sub.mydomain.com
我认为,即使有可能,我的整个规则也需要更改。我的猜测是{R:1}
在出站规则中强制将参数粘贴回用户。
请注意,我对重写规则一无所知。如果出于安全考虑,本网站不使用安全性。
解决方法
如果要从url隐藏路径,可以尝试以下规则:
<rewrite>
<rules>
<rule name="RemoveCarrotFromPath" enabled="true" stopProcessing="true">
<match url=".*" />
<action type="Redirect" url="http://www.sub.mydomain.com" />
</rule>
</rules>
</rewrite>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。