强制包含页面被包含(即不被自己打开)
Force included pages to be included (i.e. not opened by themselves)
我正在创建自己的 CMS 系统,因为我厌倦了 Wordpress(以及随之而来的黑客尝试)。
我的问题是:有什么方法可以强制包含目录中的页面只作为包含页面打开吗?基本上我正在做的是允许搜索引擎抓取我的 public_html/blog_files 和 /public_html/pages 文件夹,但是如果说 google 在搜索中显示它们,我想然后打开包含的页面预先确定的页面。
通常,在我的网站上,我调用包含 blog_abc123.php 页面的 single_post.php 页面。如果有人打开 blog_abc123.php,我希望它能将自己包含在 single_post.php 页面中,然后显示 single_post.php 页面,其中包含 blog_abc123.php。
我希望这个解释得很好,你能理解我的想法。
在此先感谢您的帮助。
为什么你的包含首先可以公开访问?你需要解决这个问题。
同时,您可以使用 get_included_files() 其中 returns 一个数组,其中包含到目前为止已包含在脚本中的所有文件。通过计算这个数组的内容,您可以确定当前文件是否被包含(因为如果没有,它将是唯一的文件)。然后你可以重定向到正确的父页面:
<?php
if (count(get_included_files()) == 1) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: /the-correct-url');
exit;
}
Google 将看到此 301 并正确索引您的网站。
话虽如此,您首先希望抓取这些包含内容很奇怪。最好使用具有正确 URL 的站点地图。
我的另一个选择是重写博客条目页面,在其中包含页眉、页脚等,但是有没有办法让我的主页只包含该页面的一部分(即只是body) 在显示 5 个最新帖子时?
我正在创建自己的 CMS 系统,因为我厌倦了 Wordpress(以及随之而来的黑客尝试)。
我的问题是:有什么方法可以强制包含目录中的页面只作为包含页面打开吗?基本上我正在做的是允许搜索引擎抓取我的 public_html/blog_files 和 /public_html/pages 文件夹,但是如果说 google 在搜索中显示它们,我想然后打开包含的页面预先确定的页面。
通常,在我的网站上,我调用包含 blog_abc123.php 页面的 single_post.php 页面。如果有人打开 blog_abc123.php,我希望它能将自己包含在 single_post.php 页面中,然后显示 single_post.php 页面,其中包含 blog_abc123.php。
我希望这个解释得很好,你能理解我的想法。
在此先感谢您的帮助。
为什么你的包含首先可以公开访问?你需要解决这个问题。
同时,您可以使用 get_included_files() 其中 returns 一个数组,其中包含到目前为止已包含在脚本中的所有文件。通过计算这个数组的内容,您可以确定当前文件是否被包含(因为如果没有,它将是唯一的文件)。然后你可以重定向到正确的父页面:
<?php
if (count(get_included_files()) == 1) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: /the-correct-url');
exit;
}
Google 将看到此 301 并正确索引您的网站。
话虽如此,您首先希望抓取这些包含内容很奇怪。最好使用具有正确 URL 的站点地图。
我的另一个选择是重写博客条目页面,在其中包含页眉、页脚等,但是有没有办法让我的主页只包含该页面的一部分(即只是body) 在显示 5 个最新帖子时?