0

(对不起,如果这是一个重复的问题,我很难考虑如何搜索它,只是想出了数千个关于如何使 404 工作的结果。)

我正在尝试构建一个大致遵循以下形式的 PHP 网站:http://www.example.com/user/MrPoopPants

我想知道最好的解决方案。在试图弄清楚 URL 缩短器如何重定向时,一个网站建议通过 404 发送每个请求,并让 404 错误页面使用$_SERVER['REQUEST_URI']

有了这个,您可以preg_split询问数据库是否有一个名为 MrPoopPants 的用户,然后只需使用 PHP 基于包含和他的数据库构建您的站点。

我不喜欢的两个问题是:我在网站的每个页面上都使用 404,这似乎是一件非常糟糕的事情;我还依赖于整个网站的单个 php 文件,这看起来很糟糕。

最好的方法是什么?编辑:也就是说,我意识到这是一种不好的做法,解决方案是什么?如何在不重定向到 404 的情况下检测 URL 信息?我如何设置一个页面,以便在您这样做时/user/manboy它知道让/user/user.php读取 URL 并构建页面?

4

4 回答 4

1

您本质上是在询问 URL 重写。mod_rewrite可以在此处找到为初学者解释所有重要位和字节的优秀教程。

处理重写请求的 PHP 部分恐怕是 PHP 101,没有人可以简单地向您“解释”。你需要对一个非常具体的问题提出一个具体的问题,以便人们能够真正帮助你。

于 2012-07-13T01:50:21.640 回答
1

您尝试做的事情可以通过 URL 重写来完成。尽管您确实应该研究 PHP 框架,但您可以自己进行重写。

它允许您创建http://mydomain.com/user/1可以在服务器上处理的 URL,方法是将其重写为:http://mydomain.com?q=user/1.

然后,您可以使用以下代码访问 URL: $url = $_GET['q'];

http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/

于 2012-07-13T01:48:02.250 回答
0

这里关于重写规则的其他答案是绝对正确的。但是,我过去遇到过一种情况,服务器在一个主机名下托管大量不同的应用程序,我必须完全按照您的建议进行操作。

基本上,由于共享 IIS 服务器上的锁定重写配置,我将 404 页面设置为 PHP 脚本。该脚本将在数据库中查找尝试的 URL,以查看它是否被设置为重定向到其他地方。

现在这里的关键是 404 从未发送给客户端。客户端收到带有Location标头的 301 或 302。客户端从来不知道它遇到了 404 页面,因为它没有作为一个返回。(当然,如果脚本在数据库中找不到重定向条目,它会返回正确的 404 页面和状态码。)

简而言之,虽然非常规,但如果您已经用尽了正常的选择,并且对如何回应客户保持谨慎,那么这种方法没有任何问题。

于 2012-11-23T06:29:47.750 回答
0

404 错误并不是您用来使您的网站正常运行的工具。相反,仅将其视为在找不到客户要求的内容时发送给客户的响应。

处理这个问题的更好方法是设置你的 web 框架,这样你就有一个单一的脚本来响应表单的任何 URL,http://www.example.com/user/_____其中任何内容都跟在 final /. 然后您可以编写代码在数据库或其他任何地方查找用户名,并生成所需的结果页面。

于 2012-07-13T01:38:07.770 回答