【问题标题】:Making a URL shorter - PHP get缩短 URL - PHP get
【发布时间】:2012-12-05 19:11:42
【问题描述】:

如果 URL 如下所示,我如何从 PHP 访问变量 GET 变量: http://example.com/somehash

当有这样的事情时,我显然知道该怎么做: http://example.com/f.php?h=somehash

这里我只取$_GET["h"],但我不知道第一种情况该怎么做...

【问题讨论】:

  • “第一种情况”没有GET变量...
  • 搜索重写规则。这里有数千个示例。

标签: php url get


【解决方案1】:

答案是你不能。至少在没有一些额外的 Web 服务器配置的情况下并非如此。通常,为了在 PHP 中实现这样的“干净 URL”,在 Web 服务器中执行 URL 重写(mod_rewrite,例如在 Apache 上)。这样做是静默地重定向请求

http://example.com/somehash

由脚本处理

http://example.com/f.php?h=somehash

这允许 PHP 像往常一样填充 $_GET,同时仍然在浏览器中显示一个干净的 URL。

您可以在 StackOverflow 或 Google 中搜索任意数量的关于如何为干净的 URL 进行 URL 重写的示例。

【讨论】:

    【解决方案2】:

    如果服务器有重写规则将 URL 更改为漂亮的,它仍然可以正常访问。 ($_GET) 这是因为脚本以相同的方式解释 URL,但是 mod-rewrite 规则会更改显示的 URL 以使其更漂亮/更容易链接回来。

    查看我的回答:Need some answer about example.php/example 了解更多信息。

    【讨论】:

      【解决方案3】:

      这里有多个部分在起作用:当用户请求 http://example.com/some-page 时,他们连接的 Web 服务器会接收到请求 example.com 域和路径 some-page 的 HTTP 请求。

      您的网络服务器会选择该域,将域与正确的虚拟主机匹配,然后将请求传递给该域。由于域的文档根目录中可能没有名为 some-page 的文件,因此 Web 服务器将发回 404 Not Found 错误消息。

      您想告诉您的 Web 服务器将所有与已知文件或目录不匹配的请求重定向到默认脚本,例如 index.php。如果您使用的是 Apache,则可以使用 HTTP 重写规则来完成此操作。当 Apache 发送请求时,它通常不会被修改。您将能够使用$_SERER['REQUEST_URI'] 选择您想要的路径。

      【讨论】:

        【解决方案4】:

        尽管您可能希望使用重写规则来正确执行此操作,但您仍然可以使用基本的 PHP 来查找 URI 段,假设您已经有了重写规则以允许首先解析指定的 URL。 ..

        function uriSegments()
        {
            return explode("/", $_SERVER['REQUEST_URI']);
        }
        
        $segments = uriSegments();
        
        echo $segments[1];
        

        这应该让你“一些哈希”

        【讨论】:

          【解决方案5】:

          在 PHP 中,您可以查阅 $_SERVER['REQUEST_URI"] 值,并在需要时应用一些文本转换(子字符串、正则表达式),但在您的情况下,直接使用该值应该可以工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-10-31
            相关资源
            最近更新 更多