对于"经典"网站,会为每个网页创建一个/foldername/index.php
。然而,对于WordPress,情况并非如此。例如,如果使用URI为http://myblog.org/some_page
的WordPress创建了一个页面,则在web主机的FTP中找不到文件夹www/myblog.org/some_page
。
那么,我的问题是,如何为任意page_name
提供位于http://[MY_WEBSITE].com/[page_name]
的页面,而不为每个page_name
创建新文件夹?
一种方法是使用page_name作为公共文件的参数,并使用该参数来提供所需页面的内容。
该行为由.htaccess
文件处理(在Apache服务器中),其中定义了重写规则。重写规则基本上捕获传入流量,并将这些请求引导到服务器上的文件(通常是充当router
的单个页面)。
然后,路由器负责获取输入URI(通常通过PHP中的$_SERVER["REQUEST_URI"]
),并确定如何处理它,以及最终该请求的输出。
至于一个不错的路由器,你可以看看klein.php
。还有一个简单的例子:
# htaccess file
RewriteEngine On
RewriteRule ^[^'.]+$ index.php
和index.php
:
$route = $_SERVER["REQUEST_URI"];
if($route === '/home')
{
echo 'This is the homepage';
}
您告诉服务器重写URL。大多数服务器都以自己的方式进行操作,因此要了解如何进行操作,请查看服务器的文档。
Wordpress使用模板,这些模板利用require()
函数和通常称为"循环"的foreach循环来检索内容。
使用不同的模板调用不同的页面。如果你想知道这个逻辑是如何计算的,可以看看这个。