我们重建了我们的网站,我们的扩展程序将为.html
。目前,他们是.htm
。当用户从已添加书签的页面访问我们的网站时,例如.htm
,我希望它重定向到.html
版本。
我已经查看了stackoverflow,看看是否已经有了Q& A.大多数是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 Rewrite模块中。我为入站规则创建了一个新的“空白规则”。以下是我正在使用的设置,如stackoverflow帖子所建议的那样:(顺便说一下,我会在这个帖子中发布这个,但它已经超过3年了,所以我不确定是否有人建议)
请求的网址:匹配模式
使用:正则表达式
模式:(.*).htm(.*)
选中忽略案例。
条件:本地分组:全部匹配
我添加了条件......
条件方法:{REQUEST_METHOD}
检查输入字符串:是否匹配模式
模式:^GET$
检查忽略案例
操作类型:重定向
重定向网址:{R:1}.html{R:2}
选中附加查询字符串
重定向类型:永久(301)
我正在做301,因为我希望搜索引擎知道我们的网址扩展已更改。我们的网址完全一样。唯一的区别是它们将是.html
而不是.htm
。所以... something/something.htm
是something/something.html
。
答案 0 :(得分:2)
规则应该如下:
<rule name="htm to html" stopProcessing="true">
<match url="(.+).htm$" />
<action type="Redirect" url="{R:1}.html" />
</rule>
或者在配置屏幕中:
此规则会将任何以.htm
结尾且至少包含一个字符{ur> .htm
的网址重定向到同一网址,但将.htm
替换为.html