0

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

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

但是,我想知道是否有另一种方法可以通过 URL 发送值并使用 PHP 获取它们,其 URL 更像这样:

www.site.com/ChanceM

或者:

www.site.com/profile.php/ChanceM

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

4

5 回答 5

1

对于 Apache 是 - 您需要查看手册页以了解重写规则。该链接将告诉您如何执行此操作。还可以查看 Apache 文档。

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

于 2012-04-19T00:07:50.097 回答
0

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

于 2012-04-19T00:07:39.177 回答
0

是的,您可以按照您说明的任何方式进行操作。

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

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

于 2012-04-19T00:08:19.190 回答
0

如果您想发送“更干净的 URL”(不进行某种类型的 URL 重写),您可以使用 implode 和 parse url 之类的东西:

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

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

于 2012-04-19T00:09:10.003 回答
0

你想mod_rewite在 Apache 中使用。

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

你可以在这里测试它:http ://martinmelin.se/rewrite-rule-tester/

于 2012-04-19T00:10:16.643 回答