缩短网址 - PHP获取

时间:2012-12-05 19:11:42

标签: php url get

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

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

在这里我只需要$ _GET [“h”],但我不知道如何为第一种情况做这件事......

5 个答案:

答案 0 :(得分:3)

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

的请求
http://example.com/somehash

的脚本处理
http://example.com/f.php?h=somehash

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

您可以搜索StackOverflow或Google以获取有关如何为干净网址重写网址的任意数量的示例。

答案 1 :(得分:0)

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

请查看我的答案:Need some answer about example.php/example以获取更多信息。

答案 2 :(得分:0)

这里有多个部分:当用户请求http://example.com/some-page时,他们连接的网络服务器会收到一个HTTP请求,询问example.com域和路径some-page。< / p>

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

您希望告知您的Web服务器将所有与已知文件或目录不匹配的请求重定向到默认脚本,例如index.php。如果您正在使用Apache,则可以使用HTTP重写规则来完成此任务。当Apache发送请求时,它通常是完全未修改的。您将能够使用$_SERER['REQUEST_URI']来获取所需的路径。

答案 3 :(得分:0)

虽然你可能想要使用重写规则来正确地执行它,但是你仍然可以使用基本的PHP来查找URI段,假设你已经有了重写规则来允许指定的URL首先解析。 ..

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

$segments = uriSegments();

echo $segments[1];

那应该让你“somehash”

答案 4 :(得分:0)

从PHP中,您可以参考$_SERVER['REQUEST_URI"]值,并根据需要应用一些文本转换(子字符串,正则表达式),但在您的情况下直接使用该值应该有效。