(很抱歉,如果这是一个重复的问题,我很难想到如何搜索它,并且想出了关于如何使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并构建页面?
答案 0 :(得分:1)
您尝试执行的操作可以通过URL重写来完成。虽然您应该真正研究PHP框架,但您可以自己重写。
它允许您创建http://mydomain.com/user/1
之类的网址,您可以在服务器上处理这些网址,并将其重写为:http://mydomain.com?q=user/1
。
然后,您可以使用以下代码访问代码中的URL:
$url = $_GET['q'];
http://www.addedbytes.com/for-beginners/url-rewriting-for-beginners/
答案 1 :(得分:1)
您实质上是在询问网址重写。可以找到一个优秀的初学者教程,解释mod_rewrite
的所有重要位和字节 here 。
处理重写请求的PHP部分恐怕是PHP 101,没有人可以简单地“解释”给你。您需要针对特定问题提出具体问题,以便人们能够真正帮助您。
答案 2 :(得分:0)
404错误并不是您用来使网站正常运行的工具。相反,只能将其视为当客户端要求的内容无法找到时发送给客户端的响应。
更好的处理方法是设置您的Web框架,以便您拥有一个脚本,该脚本可以响应http://www.example.com/user/_____
形式的任何URL,其中任何内容都跟在最终/
之后。然后,您可以编写代码以在数据库或其他任何内容中查找用户名,并生成所需的结果页面。
答案 3 :(得分:0)
此处有关重写规则的其他答案绝对正确。但是,过去我遇到过一种情况,一台服务器在一个主机名下托管了大量不同的应用程序,我必须完全按照你的建议进行操作。
基本上,由于共享IIS服务器上的重写配置被锁定,我将404页面设置为PHP脚本。此脚本将在数据库中查找尝试的URL,以查看是否将其设置为重定向到其他位置。
现在关键是404从未发送给客户端。客户端获得了带有Location
标头的301或302。客户从来不知道它已经打了404页,因为它没有作为一个页面返回。 (当然,如果脚本在数据库中找不到重定向条目,它将返回正确的404页面和状态代码。)
简而言之,虽然非传统,但如果您已经摆脱了正常的选择,那么这种方法没有任何问题,并且对您对客户的反应非常谨慎。