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

yizhihongxing

我来为您详细讲解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日

相关文章

  • php中使用array_filter()函数过滤数组实例讲解

    现在我来为你详细讲解“php中使用array_filter()函数过滤数组实例讲解”的完整攻略: 1. array_filter()函数是什么? array_filter()函数是PHP中常用的一个数组处理函数,其作用是根据指定的回调函数过滤数组中的元素并返回过滤后的新数组。 2. array_filter()函数的语法 array array_filter…

    PHP 2023年5月26日
    00
  • php 一维数组的循环遍历实现代码

    下面是讲解 PHP 一维数组循环遍历实现代码的攻略: 一、使用 foreach 循环遍历数组 PHP 一维数组可以使用 foreach 循环进行遍历和打印输出,具体步骤如下: 用关键字 foreach 循环来遍历数组; 遍历时,需要建立循环变量 $value 和 $key,分别用来代表数组的元素值和元素下标。 示例1:遍历输出一维数组的键值对 $array …

    PHP 2023年5月26日
    00
  • PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析

    PHP是一种流行的服务器端脚本语言,不同版本的PHP有不同的特性和兼容性。选择适合自己项目的PHP版本可以提高网站的稳定性和性能。以下是关于PHP版本的选择及兼容性问题分析的完整攻略: PHP版本的选择 5.2.17 兼容性较好,许多老旧的CMS系统(如dedecms等)都需要PHP5.2版本的支持。 相比较其他版本,安全性较低,建议不要使用。 PHP5.2…

    PHP 2023年5月27日
    00
  • php实现查询功能(数据访问)

    这里我为大家详细讲解一下 PHP 实现查询功能(数据访问)的攻略。在进行操作之前,您需要确保您的 PHP 环境已经搭建好,并且您已经连接并能成功访问您的数据库。 1. 用 PDO (PHP 数据对象)实现查询功能 首先,我们需要新建一个 PHP 文件,比如 query.php,然后在其中添加以下代码: <?php $dsn = ‘mysql:host=…

    PHP 2023年5月23日
    00
  • PHP获取客户端及服务器端IP的封装类

    要编写一个能够在PHP中获取客户端及服务器端IP的封装类,需要遵循以下步骤: 编写类文件 首先,需要编写一个类文件,使用PHP语言完成该类的具体实现。该类可以包括以下方法: getUserIP():用于获取客户端IP地址 getServerIP():用于获取服务器端IP地址 例如下面是一个简单的实现: <?php class IP { public s…

    PHP 2023年5月26日
    00
  • php判断一个数组是否为有序的方法

    要判断一个数组是否为有序,首先需要确定什么是“有序”的定义。通常情况下,有序数组是指按照一定的规则排序过的数组,例如从小到大或从大到小排列的元素。基于这个定义,可以采用以下方法来判断一个PHP数组是否为有序的。 一、 使用sort函数 sort函数是PHP自带的用于数组排序的函数,可以按照升序或降序排列整数、字符串和其他类型的数组元素。如果一个数组已经是有序…

    PHP 2023年5月26日
    00
  • PHP程序员编程注意事项

    PHP程序员编程注意事项 作为一名PHP程序员,编写高质量、高可维护性、高可扩展性的代码是非常重要的。以下是一些编程注意事项: 1. 代码风格 良好的代码风格可提高代码的可读性和可维护性。建议遵循 PSR 规范,尤其是 PSR-1 和 PSR-2 标准。可以使用 PHP_CodeSniffer 工具来检测代码风格是否符合 PSR 规范。 以下是示例代码: &…

    PHP 2023年5月23日
    00
  • phpstudy apache开启ssi使用详解

    PHPStudy+Apache开启SSI使用详解 SSI(Server Side Include)是一种服务器端的页面包含技术,可以在HTML页面中嵌入动态内容。在PHPStudy中,我们可以通过配置Apache服务器来开启SSI功能。 以下是PHPStudy+Apache开启SSI使用的详细步骤: 1. Apache配置文件 首先,我们需要修改Apache…

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