May*_*hak 5 asp.net subdomain url-rewriting iis-7.5 c#-4.0
我希望这不是我第一次在SO上提出这个问题.
我在我的网站上有网址,并且正在使用query string值例如:http://foo.com/xyzPage.aspx?barvalue = yehaa
至
请建议如何在不在服务器上实际创建子域的情况下完成它.
我在服务器机器上安装了IIS 7.5并使用了Asp.net 4.0.
非常感谢
che*_*fly 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>
Run Code Online (Sandbox Code Playgroud)
它的每一个网址的结尾或不与匹配/,并在使用前的东西foo.com,然后将它改写到http://foo.com?barvalue={C:1}哪里{C:1}是什么值之前输入foo.com.
如果您想阻止人们直接访问http://foo.com?barvalue={C:1},您可以使用以下规则.
您可以通过在文件中添加以下规则来使用IIS的重写模块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>
Run Code Online (Sandbox Code Playgroud)
它会检查网址是否完全匹配xyzPage.aspx(之前或之后没有).
它检查查询字符串是否包含barvalue参数(并且只包含此参数)以及它的值是否为空.
如果这两个条件没问题,它会触发Redirectto http://barvalue.original.host.
您的问题已指定Rewrite,因此,如果这确实是您要执行的操作,请将操作更改type="Redirect"为type="Rewrite".
重要提示:您可能需要安装应用程序请求路由模块,并在启用代理模式的情况下将Rewrite其设置为其他域.