网站设计费用,手机网站建设推荐乐云seo,酒泉网站建设平台,动力无限做网站怎样概述
在现代 Web 开发中#xff0c;URL 的设计对用户体验和搜索引擎优化#xff08;SEO#xff09;至关重要。动态 URL 虽然功能强大#xff0c;但往往显得冗长且不友好。伪静态#xff08;URL 重写#xff09;技术通过将动态 URL 转换为静态样式#xff0c;不仅提高了…概述
在现代 Web 开发中URL 的设计对用户体验和搜索引擎优化SEO至关重要。动态 URL 虽然功能强大但往往显得冗长且不友好。伪静态URL 重写技术通过将动态 URL 转换为静态样式不仅提高了用户体验也增强了搜索引擎的抓取效率。本文将详细介绍什么是伪静态以及如何在 PHP 中实现伪静态。
什么是伪静态
伪静态又名 URL 重写是将动态的网址如 abc.php?langcnclass1id2通过重写技术转换为静态样式的网址如 abc-cn-class1-id2.html。实际上这些静态样式的网址在服务器上并不存在而是通过服务器配置和脚本处理来实现的。
动态、静态、伪静态之间的利与弊
动态网址
优点 动态网址能够告诉搜索引擎更多的参数信息有助于内容的识别和处理。参数可以灵活变化适应不同的请求。 缺点 过长的 URL 可能会影响用户体验和 SEO。大量相同的参数可能会导致重复页面影响搜索引擎的抓取效率。
静态网址
优点 清晰明了易于理解和记忆。对搜索引擎友好提高点击率。 缺点 静态文件生成和更新较为耗时尤其是在内容频繁变化的情况下。静态文件占用硬盘空间可能影响服务器性能。
伪静态网址
优点 结合了动态和静态的优点既保持了动态 URL 的灵活性又具有静态 URL 的友好性。不需要生成大量的静态文件节省硬盘空间。 缺点 伪静态依赖于服务器配置和脚本处理增加了服务器的 CPU 负载。如果配置不当可能会导致重复页面影响 SEO。
PHP 伪静态实现方法
方法一手动解析 URL
?php
// 伪静态方法一// localhost/php100/test.php?id|1action|2
$Php2Html_FileUrl $_SERVER[REQUEST_URI];
echo $Php2Html_FileUrl . br; // /php100/test.php?id|1action|2$Php2Html_UrlString str_replace(?, , str_replace(/, , strrchr(strrchr($Php2Html_FileUrl, /), ?)));
echo $Php2Html_UrlString . br; // id|1action|2$Php2Html_UrlQueryStrList explode(, $Php2Html_UrlString);
print_r($Php2Html_UrlQueryStrList); // Array ( [0] id|1 [1] action|2 )
echo br;foreach ($Php2Html_UrlQueryStrList as $Php2Html_UrlQueryStr) {$Php2Html_TmpArray explode(|, $Php2Html_UrlQueryStr);print_r($Php2Html_TmpArray); // Array ( [0] id [1] 1 ) ; Array ( [0] action [1] 2 )echo br;$_GET[$Php2Html_TmpArray[0]] $Php2Html_TmpArray[1];
}//echo 假静态$_GET变量br /;
print_r($_GET); // Array ( [id|1action|2] [id] 1 [action] 2 )
echo br;
echo hr;
echo $_GET[id] . br; // 1
echo $_GET[action]; // 2
?方法二基于路径解析
?php
// 伪静态方法二// localhost/php100/test.php/1/2
$filename basename($_SERVER[SCRIPT_NAME]);
echo $_SERVER[SCRIPT_NAME] . br; // /php100/test.php
echo $filename . br; // test.phpif (strtolower($filename) test.php) {if (!empty($_GET[id])) {$id intval($_GET[id]);echo $id . br;$action intval($_GET[action]);echo $action . br;} else {$nav $_SERVER[REQUEST_URI];echo 1: . $nav . br; // /php100/test.php/1/2$script $_SERVER[SCRIPT_NAME];echo 2: . $script . br; // /php100/test.php$nav ereg_replace(^$script, , urldecode($nav));echo $nav . br; // /1/2$vars explode(/, $nav);print_r($vars); // Array ( [0] [1] 1 [2] 2 )echo br;$id intval($vars[1]);$action intval($vars[2]);}echo $id . . $action;
}
?方法三使用正则表达式
?php
// 伪静态方法三function mod_rewrite() {global $_GET;$nav $_SERVER[REQUEST_URI];echo $nav . br;$script_name $_SERVER[SCRIPT_NAME];echo $script_name . br;$nav substr(ereg_replace(^$script_name, , urldecode($nav)), 1);echo $nav . br;$nav preg_replace(/^.ht(m){1}(l){0,1}$/, , $nav); // 这句是去掉尾部的.html或.htmecho $nav . br;$vars explode(/, $nav);print_r($vars);echo br;for ($i 0; $i count($vars); $i 2) {$_GET[$vars[$i]] $vars[$i 1];}return $_GET;
}mod_rewrite();
$year $_GET[year]; // 结果为2006
echo $year . br;
$action $_GET[action]; // 结果为_add
echo $action;
?方法四利用 PATH_INFO
?php
// 伪静态方法四// 利用 server 变量 取得 PATH_INFO 信息 该例中为 /1,100,8630.html 也就是执行脚本名后面的部分
if ($path_info $_SERVER[PATH_INFO]) {// 正则匹配一下参数if (preg_match(/\/(\d),(\d),(\d)\.html/si, $path_info, $arr_path)) {$gid intval($arr_path[1]); // 取得值 1$sid intval($arr_path[2]); // 取得值 100$softid intval($arr_path[3]); // 取得值 8630} else {die(Path:Error!);}// 相当于 soft.php?gid1sid100softid8630
} else {die(Path:Nothing!);
}
?使用 Apache 进行 URL 重写
1. 检测 Apache 是否支持 mod_rewrite
通过 PHP 提供的 phpinfo() 函数查看环境配置通过 CtrlF 查找到“Loaded Modules”其中列出了所有 Apache2Handler 已经开启的模块如果里面包括“mod_rewrite”则已经支持不再需要继续设置。
如果没有开启“mod_rewrite”则打开目录 您的 Apache 安装目录 /apache/conf/ 下的 httpd.conf 文件通过 CtrlF 查找到“LoadModule rewrite_module”将前面的“#”号删除即可。
如果没有查找到则到“LoadModule” 区域在最后一行加入 LoadModule rewrite_module modules/mod_rewrite.so必选独占一行然后重启 Apache 服务器即可。
2. 让 Apache 服务器支持 .htaccess
如何让自己的本地 Apache 服务器支持 .htaccess 呢其实只要简单修改一下 Apache 的 httpd.conf 设置就可以让 Apache 支持 .htaccess。
打开 httpd.conf 文件在哪里Apache 目录的 CONF 目录里面用文本编辑器打开后查找
Directory /Options FollowSymLinksAllowOverride None
/Directory改为
Directory /Options FollowSymLinksAllowOverride All
/Directory就可以了。
3. 建立 .htaccess 文件
如果是在 Windows 平台下刚开始还真不知道怎么建立 .htaccess 文件因为这个文件实际上没有文件名仅仅只有扩展名通过普通方式是无法建立这个文件的别着急马上告诉你三种方法
用记事本打开点击文件–另存为在文件名窗口输入 .htaccess注意是整个绿色部分也就是包含英文引号然后点击保存就行了。进入 cmd 命令窗口通过 cd 切换到刚建立 htaccess.txt 文件的文件夹然后输入命令 rename htaccess.txt .htaccess然后点击键盘 Enter 键即可。通过 FTP 连接 htaccess.txt 所在文件夹通过 FTP 软件重命名。
4. Rewrite 规则学习
我们新建一个 .htaccess 文件之后就在里面写入以下内容
RewriteEngine on
# RewriteEngine 为重写引擎开关on 为开启off 为关闭
RewriteRule ([0-9]{1,})$ index.php?id$1
# ([0-9]{1,}) 是指由数字组成的$ 是结束标志说明是以数字结束# 好吧现在我们可以实现伪静态页面了写下一个规则
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,})\.html$ index.php?action$1id$2
# ([a-zA-Z]{1,})-([0-9]{1,})\.html$ 是规则index.php?action$1id$2 是要替换的格式
# $1 代表第一个括号匹配的值$2 代表第二个如此类推总结
本文详细介绍了 PHP 伪静态的概念及其多种实现方法并通过具体的代码示例展示了每个步骤。通过理解这些基本概念和技术我们可以更加灵活地在 Web 开发中应用伪静态技术提升用户体验和搜索引擎优化效果。