有没有另一种方法可以使用 PHP 通过 URL 传递值


Is there another way to pass values through a URL with PHP?

我正在开发一个带有用户帐户的网站。每个 URL 的行如下:

www.site.com/profile.php?user=ChanceM

但是,我想知道是否有另一种方法可以通过 URL 发送值并使用 PHP 获取它们,如下所示的 URL:

www.site.com/ChanceM

或:

www.site.com/profile.php/ChanceM

我只是想知道这是否可能,因为记住第一个 URL 不是很用户友好。谢谢!

对于 Apache 是的 - 您需要浏览手册页以获取重写规则。该链接将告诉您如何执行此操作。另请查看 Apache 文档。

至于其他服务器我不知道。

当然有办法做到这一点,但可能不像 $_GET 数组那样直接内置到 php 中。 您可以做的一件事是在 apache 配置中,将 404 页面替换为 php 脚本,该脚本获取针对的 url 并重定向到像 www.site.com/profile.php?user=ChanceM 这样的版本(我认为在mod_rewrite你也可以这样做)。

是的,你可以用你说明的任何方式去做。

在第一个示例中,您必须使用类似 mod_rewrite 的东西,它可以透明地将友好 URL (site.com/Username) 重写为 PHP 脚本 (site.com/profile.php?user=Username)

使用第二种方法,您必须使用 $_SERVER['REQUEST_URI'] 从 URL 访问数据,并将其手动解析为可用的变量。

如果你想

发送"更干净的URL"(不做某种类型的URL重写),你可以使用内爆和解析url之类的东西:

http://us2.php.net/manual/en/function.parse-url.php
http://us2.php.net/manual/en/function.implode.php

这些方法允许您提取URL的各个部分并使用它们

你想在Apache中使用mod_rewite

下面是重写规则的示例RewriteRule ^(.*)$ profile.php?user=$1

您可以在此处进行测试:http://martinmelin.se/rewrite-rule-tester/