我希望这不是我第一次在 SO 上问这个问题。
我的网站中有 URL,并且正在使用query string
值 例如: http: //foo.com/xyzPage.aspx?barvalue=yehaa
到
请建议如何在不实际在服务器上创建子域的情况下完成它..
我在服务器机器上安装了IIS 7.5并使用Asp.net 4.0。
非常感谢
我希望这不是我第一次在 SO 上问这个问题。
我的网站中有 URL,并且正在使用query string
值 例如: http: //foo.com/xyzPage.aspx?barvalue=yehaa
到
请建议如何在不实际在服务器上创建子域的情况下完成它..
我在服务器机器上安装了IIS 7.5并使用Asp.net 4.0。
非常感谢
根据我们的评论进行编辑:
要访问http://foo.com/xyzPage.aspx?barvalue=yehaa
using 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>
它匹配每个以 a 结尾或不以 a 结尾的 url/
并使用之前的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>
它检查 url 是否完全匹配xyzPage.aspx
(之前或之后都没有)。
它检查查询字符串是否包含barvalue
参数(并且只有这个参数)以及它的值是否不为空。
如果这两个条件都可以,它会触发Redirect
to http://barvalue.original.host
。
您的问题指定Rewrite
,因此如果这确实是您想要做的,请将操作更改type="Redirect"
为type="Rewrite"
。
重要提示:您可能需要安装和设置应用程序请求路由模块Rewrite
,并启用代理模式到不同的域。