【问题标题】:Is it possible to change the url of a static .html without changing the name of the file?是否可以在不更改文件名的情况下更改静态 .html 的 url?
【发布时间】:2013-07-01 03:35:04
【问题描述】:

我想知道是否有办法在不更改文件名的情况下更改.html 文件的网址。例如。如果我有一个页面名为1.html 的网站,有没有办法让它在访问者和爬虫面前显示为mypagename.html

【问题讨论】:

  • 我认为您可以告诉 Apache 例如在特定 URL 下提供文件。对它的了解还不够,无法写出正确的答案;)

标签: html


【解决方案1】:

这称为 URL 重写。 URL 重写实现在不同平台之间有所不同。因此,您必须说明您的服务器应用程序(例如 Apache、IIS 等)。

【讨论】:

  • 感谢您的回复。现在我知道它可以与例如“RewriteRule ^mypagename.html$ 1.html”一起使用。一个问题仍然存在。我计划用很多页面来做到这一点。你认为这种重写有最大页数还是不会占用太多服务器资源?例如。 1.000.000 次重写或更多。再次感谢。
  • 您可以使用正则表达式来翻译带有模式的输入。实际上,即使在您的示例中,您也正在使用它。 ^page.html$ 是一个有效的正则表达式。您可以使用 ^page/(\d+)-(\w+).html$ 之类的内容,并且可以使用该正则表达式将其转换为“156/hotnews.html”为“page156.html”(例如 page$1.html rewrite规则)。请查看正则表达式以获取更多详细信息。
【解决方案2】:

如果您在 *nix 上运行,使用链接可能是最简单的(软可能需要更改配置,硬需要您记住两个名称都引用同一个文件)。

启用软链接注意事项:https://serverfault.com/questions/244592/followsymlinks-on-apache-why-is-it-a-security-risk

【讨论】:

    【解决方案3】:

    您可以使用 HTML5 History API 推送一个新的(可能是假的)地址。我不建议这样做。

    https://github.com/browserstate/History.js/

    【讨论】:

      【解决方案4】:

      是的,但您的主机必须提供 URL 重写。如果您在 Apache 服务器上查找 .htaccess 功能和 mod_rewriteRewriteRule 指令

      【讨论】:

      • 我已经从你的回答中删除了 Linux,mod_rewrite 在每个平台上都可以正常运行(并且相同)。
      • 哦,好吧,我们也可以 remove Apache,作为要求,不是吗? :)
      猜你喜欢
      • 2014-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 2013-06-03
      相关资源
      最近更新 更多