PHP匹配变音使404页面更加智能化
创建您自己的 404 错识消息处理程序,为站点内容提供有用的链接和重定向。使用变音匹配(metaphone matching)和一个简单的加权记分文件为输入错误、拼写错误和无效链接生成重定向建议。根据 Web 站点的内容和首选重定向位置定制建议。捕获传入 URL 请求中的各种错误,并通过处理纠正其中的目录、脚本和 HTML 页面名称错误。
关于如何为 404 页面创建有效格式的教程比比皆是。这类教程大多建议在 404 页面中包含静态的建议链接,并将这些链接指向站点的公共区域,比如说首页、下载页面和站点的搜索引擎,前提是要有这些页面。404 页面普遍存在的问题是它们无法反映用户访问该站点的目的。本文将介绍如何构建一个建议生成器和一个方法,用于根据 Web 站点的内容提供更加有用的重定向链接。
现行的 404 处理程序允许我们为各种错误提供一些建议链接,比如说将用户指向站点目录。一些拼写校正程序(比如说 mod_speling ——— 没错,它只有一个 “l”)可用于纠正词典单词中的错误,从而将用户定向到正确的页面。本文中的代码将帮助您构建一个建议生成引擎,它可以根据 Web 站点的内容来处理在词典中无法找到的单词和目录链接。
我们考虑这样一个场景:您在电话会议中听到了一个 Web 页面名称,因此便尝试打开 blegs/DavSmath.html 链接。现行的拼写校正模块无法为此情况提供一个有用的链接。使用本文中的代码,您将能够生成一个 404 页面,并在其中显示建议的有效页面 /blogs/DaveSmith.html。
需求
本世纪生产的任何现代 PC 应该都足以编写和运行本文中的代码。如果您的 Web 页面含有超过 10,000 个不同的页面,那么可能需要大容量的内存、高性能的硬件或足够的耐心。
所提供的 Perl 和 CGI 脚本可以在多种 UNIX® 和 Windows® 平台上运行(请参阅 下载部分。虽然本文将使用 Apache 和一个 CGI 脚本作为建议引擎,但是所构建的工具应该能够在大多数 Web 服务器上正常运行。对于变音匹配,本文将引用 Michael Schwern 编写的 Text::Metaphone 模块。在开始之前,先通过喜好的 CPAN 镜像安装 Text::Metaphone 模块。请参阅 参考资料 获得下载信息。
Web 服务器页面和变音代码
针对输入和拼写错误提供替代建议的主要方法为变音匹配。与 Soundex 语音算法和一些其他算法类似,Metaphone 使用字母数字代码表示单词的发音。但是,与 Soundex 语音算法有所不同,构建语音代码的目的是匹配英文发音的语言可变性。因此,变音代码通常能够更加准确地表示特定的单词,并且为建议库的构建提供了理论基础。
考虑示例 Web 服务器目录中的下列文件。
清单 1. Web 服务器文件
以下为引用的内容: ./index.html ./survey.html ./search_tips.html ./about.html ./how.html ./why.html ./who.html ./NathanHarrington.html ./blogs/NathanHarrington.html ./blogs/DaveSmith.html ./blogs/MarkCappel.html |
针对这些静态 HTML 文件,我们将使用 buildMetaphoneList.pl 程序为所有扩展名为 .html 的文件创建变音。
清单 2. buildMetaphoneList.pl
以下为引用的内容: #!/usr/bin/perl -w # buildMetaphoneList.pl - / split filename, 0 score, metaphones use strict; find(&htmlOnly,"."); sub htmlOnly my @slParts = split /, $clipFname; print "$File::Find::name ### 0 ### "; }#if a matching .html file }#htmlOnly sub |
buildMetaphoneList.pl 程序只能处理扩展名为 .html 的文件,它将移除文件名中的 .html,然后为完整路径名称的各个部分生成变音。将 buildMetaPhoneList.pl 程序复制到 Web 服务器的根目录下,然后运行命令 perl buildMetaphoneList.pl > metaphonesScore.txt。对于清单 1 中的文件,相应的 metaphonesScore.txt 文件内容如清单 3 所示。
清单 3. metaphonesScore.txt
以下为引用的内容: ./index.html ### 0 ### INTKS ./survey.html ### 0 ### SRF ./search_tips.html ### 0 ### SRXTPS ./about.html ### 0 ### ABT ./how.html ### 0 ### H ./why.html ### 0 ### H ./who.html ### 0 ### H ./NathanHarrington.html ### 0 ### N0NHRNKTN ./blogs/NathanHarrington.html ### 0 ### BLKS N0NHRNKTN ./blogs/DaveSmith.html ### 0 ### BLKS TFSM0 ./blogs/MarkCappel.html ### 0 ### BLKS MRKKPL |
清单 3 中的每一行文字都显示了 Web 服务器根目录下的实际链接、默认作用域和变音代码。注意,how.html、 why.html 和 who.html 都解析为了相同的变音代码。要解决这个不明确的地方,需要修改作用域字段,让链接建议程序以指定的顺序向页面提供链接。比如说,将 “H” 变音条目修改为:
以下为引用的内容: ./how.html ### 100 ### H ./why.html ### 50 ### H ./who.html ### 0 ### H |
这样将创建一个直观的链接重排序,并留下空间用于作用域的进一步修改。作用域的数字越大,插入同一变音文件(不过是不同的作用域)的顺序就越靠后。比如说添加一个作用域为 25 的 hoo.html 文件列表,那么它将位于 who.html 条目之上和 why.html 条目之下。
您还可以使用作用域字段区分目录不同而名称相同的文件。比如说,将 ./NathanHarrington.html 一行的的作用域修改为 100,那么类似 nathenHorrington.html 这样的请求会将 ./NathanHarrington.html 链接列在 ./blogs/NathanHarrington.html 页面之前。
选择文件的作用域时,务必要考虑 Web 站点的统计和逻辑访问组件。从日志文件可以看出,用户对 why.html 页面的请求比较频繁,但是如果您认为 how.html 对于用户更为重要,那么只需修改相应的作用域值对排序做出纠正。
构建 CGI 404 处理程序
我们已经生成了适当的变音并为它们指定了相关的作用域值,下一步将构建实际的建议生成器。通常,404 错误消息的原因为链接输入错误或链接本身的问题。以下代码生成的建议将通过以下三个主要测试创建:根据目录结构匹配、使用变音组合匹配,以及当其他方法失败时使用 “包含” 匹配。这三种测试的设计目的是处理大多数 404 错误。MetaphoneSuggest CGI Perl 脚本的开始部分如下所示。
清单 4. MetaphoneSuggest CGI 第 1 部分
以下为引用的内容: #!/usr/bin/perl -w # MetaphoneSuggest - suggest links for typographical and other errors from 404s use s |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
