0

我为我的网站使用 url 重写。我在 IIS 上进行了设置,它可以在服务器上运行。但它不适用于本地主机。这是正常的,因为我的项目文件中没有重写 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>
4

3 回答 3

2

为什么不使用 URL 路由呢?这是更好的方法

于 2012-12-13T18:32:46.233 回答
0

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

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

于 2012-12-13T18:35:28.630 回答
-1

您需要添加一个否定条件 <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>
于 2014-11-19T14:38:32.600 回答