如果URL如下所示,如何从PHP访问变量GET变量: http://example.com/somehash
我显然知道如果有这样的事情怎么做: http://example.com/f.php?h=somehash
在这里我只需要$ _GET [“h”],但我不知道如何为第一种情况做这件事......
答案 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"]
值,并根据需要应用一些文本转换(子字符串,正则表达式),但在您的情况下直接使用该值应该有效。