【问题标题】:IIS Rewrite all filename to filename.htmlIIS 将所有文件名重写为 filename.html
【发布时间】:2015-06-08 23:04:35
【问题描述】:

如何重写我的 html 网页的 url,以便用户可以在没有 .html 的情况下访问它们。

这意味着在 IIS 服务器上上传的文件名是 example.com 上的 about.html 我希望在 example.com/about 上提供该文件

我想要几个文件都这样,所以我想要一个处理所有文件的代码。

【问题讨论】:

    标签: url iis url-rewriting iis-7 server


    【解决方案1】:

    如果您要使用静态 html 文件执行此操作,那么最简单的方法是通过静态重写。

    请看下面的文章http://www.iis.net/learn/extensions/url-rewrite-module/using-rewrite-maps-in-url-rewrite-module

    【讨论】:

    • 是的,我需要静态页面,但问题是我有数百个。我必须手动为每个页面编写单独的重写规则吗?
    • 通常为此我会做一个静态重写映射。如果您不想走那条路线,可以使用以下代码。这基本上会采用您输入的任何 URL 并尝试查找以 .html 结尾的文件。将其放在 web.config <rewrite> <rules> <clear /> <rule name="Rewrite HTML Pages" stopProcessing="true"> <match url="^([^/]+)$" /> <action type="Rewrite" url="/{R:0}.html" appendQueryString="true" logRewrittenUrl="true" /> </rule> </rules> </rewrite> 的 system.WebServer 部分
    • 我对格式化表示歉意。不知道如何解决。总而言之,上面的代码将采用 /about 并显示 /about.html 等...
    【解决方案2】:

    此 URL 重写规则会将 .html 添加到任何没有 '.' 的请求 url在最后一个 '/' 和 url 的结尾之间。因此,这将允许您使用带有和不带有 .html 扩展名的 url。

            <rule name="Append .html">
                <match url="^((.*\/)?[^/.]+)$" />
                <action type="Rewrite" url="{R:1}.html" />
            </rule>
    

    附:请注意名称减去扩展名相同的文件夹和文件。例如,如果您的网站具有以下文件结构:

    /
        content.html
        content/
            index.html
    

    那么当你请求http://localhost/content 时,你会得到 content.html,而不是 content/index.html。

    【讨论】:

      猜你喜欢
      • 2017-06-01
      • 2011-12-08
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多