ASP.NET 将所有请求重定向到单页并重写 url,使页面看起来位于根目录中

问题描述 投票:0回答:2

我有一个网站,客户只希望子目录中的单个页面可用。对其他页面的任何请求都应重定向到该页面。客户还希望 URL 始终显示为根域。

所以...

http://some-domain.com/2019/2019.html -> http://some-domain.com

我的重定向可以工作,但重写不能。大家有什么建议吗?

<rewrite>
  <rules>
    <rule name="redirect all requests" stopProcessing="true">
      <match url="^(.*)$" ignoreCase="false" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
      </conditions>
      <action type="Redirect" url="2019/2019.html" appendQueryString="true" />
    </rule>
    <rule name="Rewrite to web root" stopProcessing="true">
      <match url="^(.*)" ignoreCase="true" />
      <action type="Rewrite" url="/" />
    </rule>
  </rules>
asp.net c#-4.0 url-rewriting
2个回答
0
投票

“重写”操作使用指定的 url 生成响应,该响应将被发送到浏览器,因此,当您使用“重写”时,浏览器将不知道该响应是基于另一个地址,因此该地址对用户仍然是“/2019/2019.html”。

“Redirect”实际上会向浏览器返回一个重定向响应,因此浏览器的另一个请求将使用新的 url(在您的情况下为“/”)发送到服务器。 “重定向”解决方案是适合您的情况的正确方法。


0
投票

我知道这张票已解决,但该域肯定不再是空域,请小心您链接到的内容。

© www.soinside.com 2019 - 2024. All rights reserved.