Asp.net 在IIS7上用“重写”无法正常工作;www";

Asp.net 在IIS7上用“重写”无法正常工作;www";,asp.net,redirect,iis-7,global-asax,url-rewrite-module,Asp.net,Redirect,Iis 7,Global Asax,Url Rewrite Module,我的重定向规则有问题。我希望我的网页将有“www”前缀。它在某些页面上有效,而在另一些页面上它什么也不做。这是我的规则: <rule name="WWW Rewrite" enabled="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-

我的重定向规则有问题。我希望我的网页将有“www”前缀。它在某些页面上有效,而在另一些页面上它什么也不做。这是我的规则:

    <rule name="WWW Rewrite" enabled="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" negate="true"
          pattern="^www\.([.a-zA-Z0-9]+)$" />
      </conditions>
      <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}"
        appendQueryString="true" redirectType="Permanent" />
    </rule>

任何帮助都将不胜感激

你可以试试这个^(www.)?([a-zA-Z0-9]+)$

如果该页面当前没有“www”,则匹配,如果有或没有,则应匹配

您需要将操作编辑到此组以拾取第二组

这是您的规则,您只需检查您的主机是否与预期主机不匹配,然后重定向到正确的url即可

  <rules>
    <rule name="Canonical Host Name" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
      </conditions>
      <action type="Redirect" url="http://www.domain.com/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>


我说你需要在Global.asax文件中实例化它,是不是错了?不是,它工作得不太好。我想我没有给出所有的输入。我的站点是https或http。所以当用户尝试导航到它时,请转到,如果用户尝试导航到它,则应转到**site.com只是一个示例。您如何决定哪些要访问site.com,哪些要访问www.site.com?