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

如何用.htaccess重写含编码URL的Mod Rewrite链接?

解决.htaccess重写外部跳转链接的问题

直接上能生效的.htaccess规则:

RewriteEngine On
# 若站点部署在子目录,取消注释并修改为对应路径,比如站点在/example下就写 RewriteBase /example/
# RewriteBase /

RewriteRule ^out/(.*)$ index.php?token=out&action=$1 [L,NE]

之前规则失效的原因

  1. [^/]+匹配范围不够:你之前用的[^/]+会在遇到第一个%2F(对应原URL的/)时停止匹配,导致$1只拿到编码URL的前半段,无法完整传递目标地址。换成.*才能匹配out/之后的所有字符。
  2. 缺少NE标记:默认Apache会对$1里的特殊字符再次编码,导致传递给action的内容被二次转码,后续解码会出错。NE(No Escape)标记能保留原始的编码状态。
  3. 未启用RewriteEngine:必须在规则前加上RewriteEngine On,否则所有重写规则都不会生效。

后续处理提示

在index.php中处理跳转时,记得先解码拿到真实目标地址:

$targetUrl = urldecode($_GET['action']);
// 这里添加日志记录逻辑,比如写入数据库或文件
header("Location: $targetUrl");
exit;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:22:14