基于php的网站,显示基于URL的页面内容


php based website that displays page content based on URL?

我想做一个网站,是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的一部分作为查询字符串