这个问题最适用于示例。

说我的网络应用程序托管在http://example.com/WebApp/

据微软称 ,如果缺少尾随斜杠,IIS将重定向。 这可以按预期工作:发送到http://example.com/WebApp的请求会重定向到http://example.com/WebApp/

现在,在我的情况下,有人使用额外的正斜杠为URL添加了书签: http://example.com/WebApp//http://example.com/WebApp// 这将按预期加载Web应用程序,但现在所有相对URL都是错误的。 因此,如果我在同一个域上调用另一个应用程序,例如../AnotherApp/SomePage.aspx ,那么它将尝试加载/WebApp/AnotherApp/SomePage.aspx而不是正确加载/AnotherApp/SomePage.aspx

如何将http://example.com/WebApp//重定向到http://example.com/WebApp/

===============>>#1 票数:1

单独使用服务器端脚本似乎很难做到这一点。 也许在JavaScript中进行重定向就足够了?

<html>
<head>
<script type="text/javascript">
(function () {
    var protocol = location.href.substr(0, location.href.indexOf("://"));
    var restOfUrl = location.href.substr(location.href.indexOf("://") + "://".length);
    if (restOfUrl.match(/\/\//)) {
        location.href = protocol + "://" + restOfUrl.replace(/\/\//g, "/");
    }
})();
</script>
</head>
<body>
...
</body>
</html>

此外,您应该考虑在页面中设置规范链接 ,以便搜索引擎正确地索引内容。

===============>>#2 票数:0

您可以将IIS重写模块( http://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rule_Pattern )与重定向到单斜杠版本的正则表达式一起使用。

例如,您可以使用此正则表达式将URL与额外的斜杠匹配:

http://.*/{2,}

  ask by styfle translate from so

未解决问题?本站智能推荐:

关注微信公众号