使用PHP包含来简化网站设计

2020年12月29日17:25:04 发表评论 60 次浏览

介绍

PHP包括在内, 使你可以将网站的设计与内容分开。如果网站的某些部分在多个页面上重复出现, 例如导航栏, 则可以将其放在一个文件中。然后, 编辑该文件将立即更新包含该文件的所有页面上的内容。

要求

  • 运行CentOS 7或Ubuntu 16.04的云服务器
  • PHP已安装并正在运行。

注意:默认情况下, PHP已安装并在标准安装上运行。如果你的服务器是使用最小安装创建的, 则在继续操作之前, 需要安装和配置PHP。

配置Apache将HTML文件解析为PHP

Apache Web服务器将使用以下命令自动解析任何文件:.php扩展为PHP代码。但是, 如果你现有的网络文件.html扩展, 你还可以配置Apache以将它们解析为PHP。

这不会影响任何不包含PHP代码的HTML页面。如果在HTML文件中找到PHP代码, 它将仅允许Apache执行PHP代码。

Ubuntu 16.04

打开/etc/apache2/mods-enabled/php7.0.conf用于编辑的文件:

sudo nano /etc/apache2/mods-enabled/php7.0.conf

将以下内容添加到文件顶部:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>

保存并退出文件。重新启动Apache以使更改生效:

sudo systemctl restart apache2

CentOS的7

打开/etc/httpd/conf/httpd.conf用于编辑的文件:

sudo nano /etc/httpd/conf/httpd.conf

向下滚动到AddType块:

# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

将以下两行添加到该块:

AddType application/x-httpd-php .htm 
AddType application/x-httpd-php .html

保存并退出文件。重新启动Apache以使更改生效:

sudo systemctl restart httpd

创建一个PHP包含

作为示例, 我们将从一个读取以下内容的HTML文件开始:

<html>
<body>

<p>Hello world!</p>

<p>Welcome to the website.</p>

</body>
</html>

在本教程中, 我们将文本的第一行<h1>世界你好!</ h1>放入一个单独的文件, 然后将其包含在我们的主HTML文件中。

建立档案include-me.php在你的网站空间中, 然后将其打开进行编辑。例如, 要在/ var / www / html命令是:

sudo nano /var/www/html/include-me.php

将以下内容放入此文件:

<p>Hello world!</p>

保存并退出文件。

注意:出于安全考虑, 创建带有以下内容的包含文件被视为"最佳做法":.php延期。这样, 如果有人直接在浏览器中访问文件, 则他们只会看到空白页。

接下来, 创建一个文件welcome.html在同一目录中。例如, 要在/ var / www / html命令是:

sudo nano /var/www/html/welcome.html

将以下内容放入此文件:

<html>
<body>

<?php include('include-me.php') ?>

<p>Welcome to the website.</p>

</body>
</html>

保存并退出文件。

如你所见, 我们将原始行替换为PHP include语句:

<?php include('include-me.php') ?>

这指定了include-me.php该文件将位于同一目录中。

如果你查看welcome.html文件在浏览器中, 它将显示为:

Hello world!

Welcome to the website.

你可以包括include-me.php文件添加到你希望的其他HTML文件中。然后, 当你要更新该部分中的文本时, 只需编辑单个include-me.php文件一次, 无论它出现在其他页面上的数量如何。

这不仅可以节省你未来的编辑时间, 还可以简化每个页面的设计。例如, 如果将公共的页眉, 导航和页脚放在PHP包含文件中, 则每个页面仅需要包含特定于每个页面的内容(以及公共文件的PHP包含语句)。

包括来自其他目录的文件

PHP include语句的文件路径是相对于其显示页面的。

例如, 为了便于组织, 通常将所有PHP包含文件放入同一目录中。假设你创建了一个目录包括在 - 的里面/ var / www / html目录, 然后移动include-me.php文件在那里。

接下来, 你需要更新welcome.html文件, 使其指向该文件的新位置include-me.php页。有两种方法可以做到这一点:

相对文件路径

如果选择相对文件路径, 则需要将PHP包含语句更改为:

<?php include('includes/include-me.php') ?>
  • 优点:此方法使迁移网站更加容易。只要保留了Web目录结构, 此方法就可以在任何服务器上使用。
  • 缺点:对于其他目录中的文件, 需要稍微更改PHP的include语句。目录结构越精细, 它就越容易造成混乱。

采用../在当前文件上方包含一个目录的文件:

<?php include('../include-me.php') ?>

如果文件位于两个目录中, 则可以使用多个:

<?php include('../../include-me.php') ?>

如果文件在两个目录中, 而在另一个目录中:

<?php include('../includes/include-me.php') ?>

依此类推。

绝对文件路径

如果你希望指定绝对文件路径, 则需要将PHP包含语句更改为:

<?php include('/var/www/html/includes/include-me.php') ?>
  • 优点:无论HTML文件位于何处, PHP include语句都是相同的。
  • 缺点:如果将网站迁移到具有不同目录结构的服务器, 或迁移到服务器上的其他目录(例如, 从/ var / www / htmlto/var/www/example.com/html), 所有的PHP包含文件路径都需要更改。
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: