You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除HTML HEAD元数据中规范URL的文件扩展名?

解决方法

你可以通过处理$_SERVER['SCRIPT_NAME']的值来移除文件扩展名,下面是修改后的代码:

<link rel="canonical" href="<?php
$scheme = $_SERVER['REQUEST_SCHEME'];
$host = $_SERVER['SERVER_NAME'];
// 移除脚本路径中的文件扩展名
$scriptPath = preg_replace('/\.\w+$/', '', $_SERVER['SCRIPT_NAME']);
// 处理首页特殊情况:如果原脚本是/index.php,转为根路径/
if ($scriptPath === '/index') {
    $scriptPath = '/';
}
echo $scheme . '://' . $host . $scriptPath;
?>">

代码说明

  • preg_replace('/\.\w+$/', '', $_SERVER['SCRIPT_NAME']):用正则匹配并移除路径末尾的扩展名(支持.php、.html等常见格式)
  • 首页判断逻辑:避免首页的canonical链接显示为/index,自动转为更标准的根路径/
  • 拆分变量让代码结构更清晰,新手也能轻松看懂和调整

替代实现(用pathinfo函数)

如果对正则表达式不太熟悉,也可以用PHP内置的路径解析函数pathinfo来实现:

<link rel="canonical" href="<?php
$scheme = $_SERVER['REQUEST_SCHEME'];
$host = $_SERVER['SERVER_NAME'];
$pathDetails = pathinfo($_SERVER['SCRIPT_NAME']);
$scriptPath = $pathDetails['dirname'] . '/' . $pathDetails['filename'];
// 修复目录拼接可能出现的多斜杠问题
$scriptPath = preg_replace('|//+|', '/', $scriptPath);
// 处理首页情况
if ($scriptPath === '/index') {
    $scriptPath = '/';
}
echo $scheme . '://' . $host . $scriptPath;
?>">

这个方法通过拆解路径的目录和文件名部分,再重新拼接,同样能移除扩展名,逻辑更直观。

内容的提问来源于stack exchange,提问作者Jordan Clark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 08:12:52