iis - 将 .htm 重定向到 .html - IIS

标签 iis url-rewriting redirect

我们已经重建了我们的网站,我们的扩展名将是 .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.htmsomething/something.html

最佳答案

规则应该简单如下:

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

或者在配置屏幕中:

rule

此规则会将任何以 .htm 结尾且比 .htm 多至少一个字符的网址重定向到同一网址,但替换 .htm.html

关于iis - 将 .htm 重定向到 .html - IIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623621/

相关文章:

iis - 如何在 Windows 服务器上为传出的 HTTP 和 HTTPS 请求设置转发代理?

c# - IIS URL 重写模块 : Get ApplicationPath

asp.net - web.config 索引重定向

.htaccess - htaccess 两个参数 mod-rewrite 问题

javascript - 完全禁用 Guzzle 的重定向

asp.net - 网站无法启动 另一个网站可能正在使用相同的端口

go - IIS 作为 golang socket.io 的反向代理

asp-classic - 经典的 ASP URL 重写

PHP 页面重定向取决于 jQuery selectmenu 选择

java - 当 RequestDispatcher 包含脚本时无法重定向