PHP短链接转错404怎么办_PHP短链接404修正法【注意点】

PHP短链接返回404的常见原因:未获取原始路径、重写规则截断参数、短码查库失败且无兜底跳转;需检查Nginx/Apache重写配置、$_GET参数传递及PHP层格式校验与容错处理。

php短链接转错404怎么办_php短链接404修正法【注意点】

短链接跳转直接 404 的常见原因

PHP 短链接返回 404,通常不是路由没配好,而是 $_GET 没拿到原始路径、重写规则截断了参数、或短码查库失败后没兜底跳转。Nginx/Apache 的 rewrite 规则常把 /abc123 当作静态路径处理,根本没交给 PHP;或者 Apache 的 .htaccess 忘了加 RewriteBase,导致 $_SERVER['REQUEST_URI'] 解析错位。

mod_rewrite 下如何确保短码进 PHP

Apache 用户必须确认两点:一是 AllowOverride All 已启用,二是 .htaccess 内规则能捕获所有短码请求且不丢参。典型安全写法如下:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]{4,12})$ index.php?short=$1 [QSA,L]

关键点:

  • !-f!-d 排除真实文件/目录,避免覆盖 favicon.ico 或 assets
  • ^([a-zA-Z0-9]{4,12})$ 限制短码长度和字符集,防恶意路径遍历
  • [QSA,L]QSA 保留原始 query 参数(如 /abc123?ref=utm),L 终止后续规则

Nginx 中 try_files 配置漏掉 $args 就会丢参

Nginx 不像 Apache 自动拼接 query string,try_files 后的 index.php 必须显式带 $args,否则 $_GET['short'] 为空:

立即学习PHP免费学习笔记(深入)”;

Bing图像创建器

Bing图像创建器

必应出品基于DALL·E的AI绘图工具

下载

location / {
    try_files $uri $uri/ /index.php?short=$uri&$args;
}

注意:$uri 是解码后的路径(如 /abc123),不是原始 $request_uri;若短码含特殊字符(如 +),需用 $request_uri 并在 PHP 里手动 parse,但更推荐前端 URL encode 后再提交。

PHP 层查不到短码时别直接 404,先验格式再 fallback

很多代码一查数据库没结果就 http_response_code(404),其实应分两步:先校验 $_GET['short'] 是否符合预设格式(比如是否为空、是否超长、是否含非法字符),再查库。查不到时建议跳转首页或返回自定义提示页,而非裸 404:


容易被忽略的是:没对 $shorttrim()urldecode(),尤其当 Nginx 透传原始 $request_uri 时,可能带空格或编码字符,导致查库失败。

https://www.php.cn/faq/1995062.html

发表回复

Your email address will not be published. Required fields are marked *