URL重写适用于IIS,但不适用于localhost

时间:2012-12-13 18:26:26

标签: asp.net visual-studio-2010 iis-7 url-rewriting cassini

我使用url重写我的网站。我在IIS上进行了设置,它可以在服务器上运行。但它不适用于localhost。这是正常的,因为我的项目文件中没有包含重写URL的页面。我怎么解决这个问题?我在开发项目时使用cassini服务器。我应该在计算机中使用本地IIS吗?你可以在这里看到我在web.config文件中的url重写角色:

 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
        <rewrite>
            <outboundRules>
                <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^(.*/)ProductDetail\.aspx\?prid=([^=&amp;]+)&amp;(?:amp;)?product=([^=&amp;]+)$" />
                    <action type="Rewrite" value="{R:1}ProductDetail/{R:2}/{R:3}/" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
            <rules>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^urun/([^/]+)/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="ProductDetail.aspx?prid={R:1}&amp;product={R:2}" />
                </rule>

            </rules>
        </rewrite>
        <urlCompression doDynamicCompression="false" />
  </system.webServer>

3 个答案:

答案 0 :(得分:3)

为什么不使用Url Routing? 这是更好的方式

答案 1 :(得分:0)

是的,您必须使用“添加/删除Windows组件”在本地计算机上安装IIS。

确保在安装后在本地IIS中启用“URL重写模块”。

答案 2 :(得分:0)

您需要添加否定条件<add input="{HTTP_HOST}" pattern="localhost" negate="true" /> 所以URL重写器忽略了localhost上的任何请求。

<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
    </rule>
  </rules>
</rewrite>