我们已经重建了我们的网站,我们的扩展名将是 .html
。目前,它们是.htm
。当用户从带有书签的页面(例如 .htm
)访问我们的网站时,我希望它重定向到 .html
版本。
我浏览了 stackoverflow,看看是否已经有关于此问题的问答。大多数与 Apache - .htaccess 相关。我正在使用 IIS。我在 stackoverflow 上能找到的最接近的答案是:IIS url rewrite rewriting all .asp to .html
我尝试按照该帖子中的建议进行操作,但它不起作用。该网页告诉我此网页有一个重定向循环。
和错误代码:ERR_TOO_MANY_REDIRECTS
我位于 IIS 的 URL 重写模块中。我为入站规则创建了一个新的“空白规则”。以下是我按照 stackoverflow 帖子建议使用的设置:(顺便说一句,我本来会在该线程中发布此设置,但它已经超过 3 年了,所以我不确定是否建议这样做)
请求的 URL:与模式匹配
使用:正则表达式
模式:(.*).htm(.*)
已选中“忽略大小写”。
条件:本地分组:全部匹配
我添加了一个条件...
条件方法:{REQUEST_METHOD}
检查输入字符串是否与模式匹配
模式:^GET$
忽略大小写已选中
操作类型:重定向
重定向网址:{R:1}.html{R:2}
附加查询字符串已选中
重定向类型:永久 (301)
我执行 301 是因为我希望搜索引擎知道我们的 URL 扩展已更改。我们的网址完全相同。唯一的区别是它们将是 .html
而不是 .htm
。所以... something/something.htm
是 something/something.html
。
最佳答案
规则应该简单如下:
<rule name="htm to html" stopProcessing="true">
<match url="(.+).htm$" />
<action type="Redirect" url="{R:1}.html" />
</rule>
或者在配置屏幕中:
此规则会将任何以 .htm
结尾且比 .htm
多至少一个字符的网址重定向到同一网址,但替换 .htm
与 .html
关于iis - 将 .htm 重定向到 .html - IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623621/