我希望这不是我第一次在SO上提出这个问题。
我的网站中有网址,并且使用的是query string
个值
例如: http://foo.com/xyzPage.aspx?barvalue=yehaa
到
请建议如何实现 而不在服务器上实际创建子域 ..
我已经 IIS 7.5 安装在服务器计算机上并使用 Asp.net 4.0 。
非常感谢
答案 0 :(得分:12)
编辑以下评论:
要使用http://foo.com/xyzPage.aspx?barvalue=yehaa
访问http://yehaa.foo.com/
,您必须使用以下规则:
<rules>
<rule name="Rewrite subdomains">
<match url="^/?$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(.+)\.foo\.com$" />
</conditions>
<action type="Rewrite" url="http://foo.com?barvalue={C:1}" />
</rule>
</rules>
它会匹配每个结束与否与/
结尾的网址并使用foo.com
之前的内容,然后将其重写为http://foo.com?barvalue={C:1}
,其中{C:1}
是foo.com
之前输入的值http://foo.com?barvalue={C:1}
1}}。
如果您想阻止他人直接访问web.config
,您可以使用以下规则。
您可以在<rewrite>
<rules>
<rule name="Redirect to Subdomains" stopProcessing="true">
<match url="^xyzPage.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="^barvalue=(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}.{HTTP_HOST}" appendQueryString="false" />
</rule>
</rules>
</rewrite>
文件中添加以下规则来使用Rewrite module for IIS:
xyzPage.aspx
检查网址是否与barvalue
完全匹配(之前或之后没有任何内容)
它检查查询字符串是否包含Redirect
参数(并且只包含此参数)以及它的值是否为空。
如果这两个条件没问题,则会触发http://barvalue.original.host
到Rewrite
。
您的问题指定type="Redirect"
,因此,如果这确实是您要执行的操作,请将操作type="Rewrite"
更改为Rewrite
。
重要:您可能需要安装Application Request Routing module,并在启用代理模式的情况下将{{1}}设置为其他域。