我有一个网站,客户只希望子目录中的单个页面可用。对其他页面的任何请求都应重定向到该页面。客户还希望 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>
“重写”操作使用指定的 url 生成响应,该响应将被发送到浏览器,因此,当您使用“重写”时,浏览器将不知道该响应是基于另一个地址,因此该地址对用户仍然是“/2019/2019.html”。
“Redirect”实际上会向浏览器返回一个重定向响应,因此浏览器的另一个请求将使用新的 url(在您的情况下为“/”)发送到服务器。 “重定向”解决方案是适合您的情况的正确方法。
我知道这张票已解决,但该域肯定不再是空域,请小心您链接到的内容。