php 友好URL的实现(吐血推荐)

我来为您详细讲解PHP友好URL的实现攻略。

什么是友好URL

友好URL(SEO URL,美化URL)是指通过对URL进行处理,使其更加美观,更容易让人理解,也更容易被搜索引擎收录的URL。友好URL是将原本的动态URL转化为静态的URL,用户在页面下方看到的URL都是静态的URL。例如将 http://www.example.com/index.php?id=1 转化为 http://www.example.com/1.html 这样的静态URL。

实现步骤

Step 1:开启Apache的rewrite模块

首先需要在主机环境中开启Apache的rewrite模块。可以通过Apache的 httpd.conf 配置文件中找到 LoadModule rewrite_module modules/mod_rewrite.so,如果前面有注释符号“#”则需要去掉注释符号以启用此模块。

Step 2:编写.htaccess文件

在网站的根目录下面编写一个名为 .htaccess 的文件,文件名前面有一个点符号,它是一个隐藏文件。.htaccess 的作用是告诉 Apache 服务器如何处理网站的请求。

下面是一个示例的 .htaccess 文件:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

代码解释:

  • RewriteEngine On 表示开启URL重写功能。
  • RewriteCond %{REQUEST_FILENAME} !-d 表示如果请求的不是一个目录。
  • RewriteCond %{REQUEST_FILENAME} !-f 表示如果请求的不是一个文件。
  • RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 表示规定了重写规则。其中 ^ 表示开始匹配,(.*) 表示匹配任意字符,$ 表示结束匹配。 QSA 表示附加在查询字符串后面的参数将被追加到新的URL之后,L 表示这个规则是最后一个规则,不需要再进行匹配了。

Step 3:修改PHP文件

index.php 中通过 $_GET 获取URL参数,然后根据实际情况进行处理。

$url = $_GET['url'];
$urlArr = explode('/', rtrim($url, '/'));

代码解释:

  • $_GET['url'] 获取 URL 参数。
  • rtrim($url, '/') 去除URL末尾的 / 字符。
  • explode('/', $url) 将URL按照 / 进行分割,用于后续实现路由功能。

接下来可以按照分割后的值进行路由功能的实现。

Step 4:路由功能的实现

路由功能表示根据用户请求的URL路径进行业务处理。例如用户请求的URL路径为 /article/list,则我们需要执行“查询文章列表”的业务逻辑。

下面是一个路由功能的示例:

if (empty($urlArr[0])) { // 如果参数为空,则默认进入首页
  $controller = new HomeController;
  $controller->index();
} elseif ($urlArr[0] == 'about') { // 如果参数为 about,则进入关于页面
  $controller = new AboutController;
  $controller->index();
} elseif ($urlArr[0] == 'article' && isset($urlArr[1]) && $urlArr[1] == 'list') { // 如果参数为 article/list,则查询文章列表
  $controller = new ArticleController;
  $controller->index();
} elseif ($urlArr[0] == 'article' && isset($urlArr[1]) && is_numeric($urlArr[1])) { // 如果参数为 article/id,则查询指定文章详情
  $controller = new ArticleController;
  $controller->show($urlArr[1]);
} else {
  // 处理不存在的页面
}

代码解释:

  • 如果 $urlArr[0] 参数为空,则默认进入首页。
  • 如果 $urlArr[0] 参数为 about,则进入关于页面。
  • 如果 $urlArr[0] 参数为 article,并且 $urlArr[1] 参数为 list,则查询文章列表。
  • 如果 $urlArr[0] 参数为 article,并且 $urlArr[1] 参数为文章ID,就查询指定文章详情。

Step 5:URL静态化

使用以上方法让PHP代码支持静态化的URL。除了让代码支持URL静态化,还需要在网站后台进行专业的URL静态化操作。以下是一个静态化URL的示例:

RewriteRule ^news/([0-9]+)\.html$ news_detail.php?id=$1

这里的URL是以 .html 为后缀的静态化URL,以实现更高效的处理效果。

示例说明

示例一:对文章详情页进行静态化处理

假设我们的文章详情页URL为 http://www.example.com/article.php?id=10,我们可以通过 URL 重写的方式将其转化为静态URL http://www.example.com/article/10.html

修改 .htaccess 文件,添加以下规则:

RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [QSA,L]

接下来修改 article.php 文件,从 $_GET 中获取文章 ID,并根据实际情况处理业务逻辑。

示例二:对文章分类页面进行静态化处理

假设我们将文章分类页面设计为 /article/list/?cat_id=1,我们可以通过 URL 重写的方式将其转化为静态 URL http://www.example.com/article/cat1.html

修改 .htaccess 文件,添加以下规则:

RewriteRule ^article/cat([0-9]+)\.html$ article.php?cat_id=$1 [QSA,L]

接下来修改 article.php 文件,从 $_GET 中获取分类 ID,并根据实际情况处理业务逻辑,例如查询该类型的文章列表。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php 友好URL的实现(吐血推荐) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 微信纯文字表情包怎么做?微信快速制作文字表情包教程

    关于“微信纯文字表情包怎么做?微信快速制作文字表情包教程”,我整理了以下完整攻略: 1. 准备工作 在制作微信纯文字表情包之前,我们需要准备如下工具: 一款支持markdown语法的文本编辑器,如Typora、VS Code等 制作表情包需要用到的纯文本符号,如英文单词、数字等 2. 选择表情包主题 首先,我们需要选择自己喜欢的表情包主题,可以根据自己的爱好…

    PHP 2023年5月30日
    00
  • php实现mysql连接池效果实现代码

    以下是详细讲解如何实现 PHP 实现 MySQL 连接池效果的攻略。 什么是连接池? 连接池是将多个数据库连接预先创建并保存在内存中,需要使用数据库连接时,从连接池中获取,使用结束后,不关闭连接,而是将数据库连接放回到连接池中,以供下一次使用。连接池可以降低创建和关闭数据库连接的开销,提高SQL执行效率,整体提升web应用性能。 实现步骤 Step 1:初始…

    PHP 2023年5月27日
    00
  • 基于PHP常用字符串的总结(待续)

    关于标题“基于PHP常用字符串的总结(待续)”的详细讲解,我将从以下几个方面进行说明: 主题简介 本文是一篇关于PHP常用字符串的总结,主要介绍了在PHP编程中常用的字符串操作。为方便阅读,本文将字符串操作分为以下几个方面进行介绍:字符串声明、字符串连接、字符串替换、字符串截取、字符串查找、字符串转换等。 字符串声明 在PHP中,字符串可以用单引号(’)或双…

    PHP 2023年5月23日
    00
  • php实现singleton()单例模式实例

    下面是详细讲解“PHP实现Singleton()单例模式实例”的完整攻略: 什么是单例模式? 单例模式是一种设计模式,通过保证类只存在一个实例对象来确保该对象的全局访问性和共享。 实现Singleton()的步骤 1. 声明一个私有的、静态的变量$instance 这个变量用于存储唯一的实例对象。由于它是静态的,所以它可以被整个类所访问。 class Sin…

    PHP 2023年5月23日
    00
  • PHP中__get()和__set()的用法实例详解

    下面是关于“PHP中__get()和__set()的用法实例详解”的攻略: 什么是__get()和__set() __get() 和 __set() 是两个魔术方法(Magic Method)。 __get() 和 __set() 可以让我们在访问或者设置一个对象的属性时,可以添加额外的处理逻辑。 __get()的用法 当我们访问一个对象属性时,如果该属性不…

    PHP 2023年5月25日
    00
  • PHP生成zip压缩包的常用方法示例

    下面是详细讲解 “PHP生成zip压缩包的常用方法示例” 的完整攻略: 概述 Zip压缩包是一种常见的文件压缩格式,可以将多个文件或文件夹压缩成一个文件,方便文件的传输和存储。在PHP中,我们可以使用ZipArchive类来生成和操作Zip压缩包。 安装ZipArchive扩展 在PHP 5.2以上版本中,ZipArchive已经作为一个扩展模块包含在其中了…

    PHP 2023年5月26日
    00
  • WIN2003+IIS6 PHP 5.3.8安装配置教程[图文]

    以下是WIN2003 + IIS6 PHP 5.3.8安装配置的完整攻略: 步骤一: 安装IIS6 安装IIS6需要使用”控制面板” > “添加/删除程序”。在”添加/删除程序”的左边选择”添加/删除Windows组件”,然后勾选”Internet Information Services (IIS)”,点击”下一步”之后进行安装,完成后重启Windo…

    PHP 2023年5月24日
    00
  • php获取网卡的MAC地址支持WIN/LINUX系统

    要在PHP中获取网卡的MAC地址,需要使用系统相关的命令或API。在Windows系统中,可以使用WMI(Windows Management Instrumentation),而在Linux系统中,可以通过执行命令行获取。下面是获取MAC地址的完整攻略: 1. 方式一:使用PHP调用WMI获取MAC地址(适用于Windows系统) Windows Mana…

    PHP 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部