2

我们已经重建了我们的网站,我们的扩展将是.html. 目前,它们是.htm. 例如,当用户从带有书签的页面访问我们的网站时.htm,我希望它重定向到该.html版本。

我查看了stackoverflow,看看是否已经有关于此的问答。大多数与 Apache - .htaccess 相关。我正在使用 IIS。我在 stackoverflow 上能找到的最接近的答案是:IIS url rewrite rewriting all .asp to .html

我尝试按照该帖子中的建议进行操作,但它不起作用。网页告诉我This webpage has a redirect loop.Error code: ERR_TOO_MANY_REDIRECTS

我在 IIS 的 URL 重写模块中。我为入站规则创建了一个新的“空白规则”。以下是我按照stackoverflow帖子的建议使用的设置:(顺便说一句,我会在那个帖子中发布这个,但它已经超过3年了,所以我不确定是否建议这样做)

请求的 URL:匹配模式

使用:正则表达式

图案:(.*).htm(.*)

忽略大小写被选中。

条件:本地分组:匹配所有

我添加了一个条件...

条件方法:{REQUEST_METHOD}

检查输入字符串是否:匹配模式

图案:^GET$

忽略大小写被选中

动作类型:重定向

重定向网址:{R:1}.html{R:2}

附加查询字符串被选中

重定向类型:永久 (301)

我正在执行 301,因为我希望搜索引擎知道我们的 URL 扩展名已更改。我们的 URL 完全相同。唯一的区别是它们将.html代替.htm. 所以……something/something.htmsomething/something.html

4

1 回答 1

2

规则应该很简单:

<rule name="htm to html" stopProcessing="true">
    <match url="(.+).htm$" />
    <action type="Redirect" url="{R:1}.html" />
</rule>

或者在配置屏幕中:

规则

此规则会将任何以结尾.htm且包含至少一个字符的 url 重定向.htm到相同的 url 但替换.htm.html

于 2013-09-06T16:39:54.957 回答