【问题标题】:Is it possible to use URL folder/path without creating a corresponding directory on the server?是否可以使用 URL 文件夹/路径而不在服务器上创建相应的目录?
【发布时间】:2020-09-18 10:20:03
【问题描述】:

假设我有以下 URL,它显示了指定用户的一些唯一信息: http://example.com/?user=john-smith

我希望这个 URL 看起来像这样,因为它(据说)对 SEO 更友好且更易于阅读: http://example.com/user/john-smith

当然,我可以通过在根目录中创建“user/john-smith”子目录并在其中放置 index.php 或 default.htm 或其他任何内容来实现。 但我可能有数百万用户,我真的不想创建数百万这样的子目录(甚至不确定我能不能)。 那么,我怎样才能让用户在浏览器中输入“http://example.com/user/john-smith”,但到达或以某种方式被重定向到“http://example.com/index.php”或在不为每个用户创建单独目录的情况下完成这项工作所需的任何东西?这甚至可能吗?

注意事项: - 我能到达的最接近的是“http://example.com/user/?john-smith”,但这还不够好。 - 我正在使用带有 PHP 7 的 Windows Server 2016,但很高兴听到适用于任何平台的解决方案。

【问题讨论】:

    标签: url routes webserver url-routing


    【解决方案1】:

    好的,终于找到了答案(很遗憾,不感谢 StackOverflow)。 在 Windows Server 上,这实际上非常简单——IIS 7.0 及更高版本包含一个名为“URL Rewrite”的服务(如果默认情况下未安装,则可以单独安装),这是一个用于创建规则的非常方便的 GUI(使用标准正则表达式) 将“难以理解”的 URL 转换为服务器可以理解的内容。 在我的示例中,我只是创建了一个从 "^user/([a-z-]+)" 到 "?user={R:1}" 的转换规则,就是这样! 在 Apache 服务器上有一个类似的东西叫做“mod_rewrite”,但你可能需要手动为它编写 XML 规则。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 2020-09-12
      • 2012-08-18
      • 2018-04-08
      • 2019-05-05
      • 1970-01-01
      相关资源
      最近更新 更多