php 搜索引擎优化 如何制作一个CMS具有SEO友好的URL(图)
优采云 发布时间: 2021-04-26 03:07php 搜索引擎优化 如何制作一个CMS具有SEO友好的URL(图)
源代码和更多资源简单的PHP cms教程
SEO(搜索引擎优化,搜索引擎优化)对于每一个网站都非常重要。如果您不优化网站,搜索引擎将找不到您的网站。因此,没有人去拜访网站。
本教程仅说明SEO的一个方面,以便使网页具有友好的URL。我们很早以前就知道phpNuke和Joomla,但是它们都有相同的问题,即它们的Web链接看起来很难看:“ index.php?id = 653&page_type = blog&lang = en”。这些链接看起来都一样,很难输入。像Google这样的搜索引擎也不喜欢这种类型的URL。
如今,新一代的cms出现了,有些是使用CodeIgniter框架制作的,有些是使用Moodle或Drupal制作的。但是这些cms仍然有类似的SEO问题。此后不久,Wordpress就问世了。
这些cms的缺点之一是它们是为通用站点制作的。例如,Wordpress最初是一个博客系统,现在提供用于制作任何类型网站的插件。但是对于这样的系统,您需要大量的类,代码,插件和维护。
另一件事是,您无法在获取源代码的同时为客户出售GPL许可的代码。他们最终会听到您让他们为开源软件付费,他们可能会不喜欢它。
鉴于此,最好的解决方案可能是使自己的cms轻巧。您可以根据需要许可它,编写时将非常清楚,并且您具有自定义的数据库结构。
我们将面临的问题是“ index.php?id = 653&page_type = blog&lang = en”问题。因此,让我们看看如何制作一个cms SEO友好的网址。
PHP SEO友好的URL链接
SEO友好链接必须具有页面标题,它们必须具有可读性,并且必须摆脱index.php。例如,如您所见,“如何制作对SEO友好的链接”或“为PHP类创建站点的类”站点没有index.php,没有文件扩展名,可读性很强,您可以从链接中获取标题。这些链接必须动态生成非常重要。
然后回到“ index.php?id = 653&page_type = blog&lang = en”,当我们解决它时,我们拥有“ index.php”,这是处理cms中所有请求的主要PHP文件。
我们有文章的“ id”参数,我们有一个“ type”参数,在这种情况下,其值为“ blog”,但可以是任何东西,产品,文章或博客。最后,我们有一个“ lang”参数,适用于多种语言的网站。在本教程中,我将跳过“ lang”参数。我们需要在“ how-to-make-seo-friendly-links”链接中模仿相同的功能,因此我们可以这样做:
将所有URL请求重定向到一个位置进行处理。检查链接表并获取我们需要的数据,ID和类型。根据元素类型,我们调用适当的插件来处理和显示数据。用一个脚本处理所有请求
如果我们希望所有URL由脚本或ndex.php文件处理,则需要配置.htaccess文件。我们需要在我们的Web服务器上安装Apache,该Web服务器通过.htaccess文件提供配置控制。 .htaccess文件必须使用RewriteEngine伪指令来启用URL重写模块。然后只需添加一条规则即可将所有请求转发到index.php。
RewriteEngine On
RewriteBase /cms/
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ index.php?pid=$1 [QSA,L]
务必仔细设置这些说明。在上面的示例中,除非有人直接访问PHP或HTML文件或请求路径位于文件夹中的图像,CSS或JS,否则我将所有流量重定向到index.php。
使用[NC]标志将使RewriteRule以不区分大小写的方式匹配。换句话说,它并不关心字母在匹配的URI中是大写还是小写。
开始编写index.php
现在,我们将处理index.php的所有请求,在这里我们需要执行常规检查:谁来了,他需要什么。 index.php就像一个流量管理器。我们需要捕获即将到来的链接,并使用之前生成的所有链接来查询MySQL数据库中的特殊表,我们获得与链接URL关联的页面的ID和类型。首先让我们看一下表结构:
CREATE TABLE IF NOT EXISTS `members` (
`memberID` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL DEFAULT '',
`password` varchar(60) NOT NULL DEFAULT '',
PRIMARY KEY (`memberID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `members` (`memberID`, `username`, `password`) VALUES
(1, 'admin', '$1$8I4.v32.$bV9MWNrNAFA1bdD/JS/FW1');
// Username - admin , Password - demo
让我们看看下面的PHP代码:
如您所见,首先我们在请求URL中获得了“ $ pid”。然后,我们使用该语句查询数据库以获取元素的类型和ID。如果该元素不存在,我们会将代码重定向到自定义404页面。
如何获取SEO友好的URL信息
获取元素的类型和ID之后,其余的操作很简单。我们需要发起另一个请求以获取基于URL类型的元素详细信息。
因此,让我们假设cms中有两种类型的元素:产品和博客。如果是Blog,我们将查询blogs表并请求blogs.php文件来处理该页面。如果是产品,则查询产品表并获取其详细信息,然后调用products.php来显示该页面。这些是产品和博客表:
CREATE TABLE IF NOT EXISTS `pages` (
`pageID` int(11) NOT NULL AUTO_INCREMENT,
`pageTitle` varchar(255) DEFAULT NULL,
`isRoot` int(11) NOT NULL DEFAULT '1',
`pageCont` text,
PRIMARY KEY (`pageID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
----------------------------------
CREATE TABLE IF NOT EXISTS `webpages` (
`id` int(9) NOT NULL AUTO_INCREMENT,
`Title` varchar(255) NOT NULL,
`URL` varchar(255) NOT NULL,
`Keywords` varchar(150) NOT NULL,
`Description` varchar(250) DEFAULT NULL,
`PageDetails` varchar(5000) DEFAULT NULL,
`PageName` varchar(90) DEFAULT NULL,
`PageType` int(3) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;
public function particularPageSlug($id) {
$list="select * from webpages where URL='$id'";
$result= $this->query($list);
$count= $result->num_rows;
if($count < 1){}else{
while($row= $result->fetch_array(3)){
return $row;
}
}
}
在管理界面中创建SEO链接
我们已经看到了如何将URL请求重定向到index.php以及如何基于URL类型显示产品和博客类型信息。现在,我们将研究如何在管理界面中创建这些链接并将其添加到“ urls”表中。
添加博客时,我们将所有数据插入“博客”表中,现在我们想要获取博客ID。我们需要在“ URL”表中使用此ID。我们还需要标题来创建链接。现在,我们将使用create_link()函数:
<p>