我想做一个网站,是php,只需要一个php文档来显示内容。这有点难以解释,所以让我尽力解释。
一些网站使用基于目录的系统,如:
web.URL.com/index.htm
web.URL.com/about.htm
web.URL.com/blog.htm
等等。这包括为每个页面创建一个文本文件。
因此,这里的目标是创建一个像框架一样的页面,并根据Url显示内容,因此它将像上面的方法一样工作,但只是一个页面。我很确定你能做到这一点,但不知道正确的表达方式,也不知道在谷歌上输入它时该使用什么词汇。你可能有一些问题:
问:为什么不使用这样的参数:
web.url.com?pgid=some+page
A:当访问者键入url时,我希望url尽可能干净。例如,这更容易记住:
web.url.com/about
比:web.url.com?p=about
问:Wordpress ? ?
我们想要我们自己的东西。Wordpress很棒,但不适合我们的项目。问:JQuery吗?
A: PHP。
提前感谢!
仅使用PHP ,我认为这是不可能的。然而,很可能您的web服务器正在运行Apache,这使得该任务相当通过将您漂亮的url转换为PHP脚本可以处理的丑陋url(带有查询字符串)来完成。你的访问者不知道发生了什么;它们不会被重定向或其他。
我强烈建议您看一下本教程及其后续内容。第二个教程包含此任务所需的信息(从本节开始),但我强烈建议您阅读第一个教程,以更深入地了解您正在做的事情。
本质上,这些教程将教你如何在一个名为.htaccess
的文件中指定(丑陋的,可怕的)url重写规则。这些规则将把你漂亮的url转换(或"重写")成PHP脚本可以处理的不那么漂亮的url。
例如,yoursite.com/about
实际上会访问yoursite.com/index.php?page=about
,或者类似的东西。
对于一些示例代码,下面是95%复制粘贴自本教程的代码片段:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
正如该链接所解释的,它将把所有请求转发到index.php,除非请求的是一个实际的文件或目录。
使用基于RewriteRule
的.htaccess
。然后,您可以将所有不存在的文件(在Apache内部)重定向到一个通用的index.php
,并将请求的路径作为查询字符串?p=about
。重定向是在内部处理的,所以http://example.com/about
是该页面的外部URL。
可以使用一个switch语句检查$_GET值,并根据提供的参数输出页面。此外,您还必须添加一些mod_rewrite规则来路由这些请求。
使用PHP重写URL。PHP将把URL的一部分作为查询字符串