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

如何在PHP中获取.htaccess重写后的浏览器显示URL

获取Apache重写后浏览器显示的URI

当使用.htaccess重写URL后,$_SERVER["REQUEST_URI"]返回的是实际处理请求的文件路径(比如page.php),你可以通过以下几种方式获取浏览器地址栏显示的原始URI:

方法1:使用$_SERVER['REDIRECT_URL']

Apache在执行重写规则后,会自动生成REDIRECT_URL环境变量,它存储的就是浏览器发起请求的原始路径(即你需要的/page/some-page/)。直接读取这个变量即可:

$browserUri = $_SERVER['REDIRECT_URL'] ?? '';
// 输出示例:/page/some-page/
echo $browserUri;

方法2:在.htaccess中手动传递原始URI

如果REDIRECT_URL不可用(比如服务器配置限制),可以在重写规则里添加环境变量标记,强制保存原始请求路径:
在你的.htaccess中修改重写规则:

RewriteEngine On
RewriteRule ^page/some-page/$ page.php [QSA,E=ORIG_URI:%{REQUEST_URI}]

然后在PHP中读取自定义的环境变量:

$browserUri = $_SERVER['ORIG_URI'] ?? '';

方法3:备选方案(可靠性较低)

如果请求是从站内跳转而来,$_SERVER['HTTP_REFERER']可能包含之前的浏览器地址,但该头部可能被浏览器禁用或为空(比如用户直接输入地址时),仅作为临时备选:

$browserUri = $_SERVER['HTTP_REFERER'] ?? '';
// 注意:需要从完整URL中提取路径部分,可结合parse_url处理
$parsed = parse_url($browserUri);
$path = $parsed['path'] ?? '';

注意事项

  • 确保服务器已启用mod_rewrite模块,且.htaccess文件的重写规则配置正确。
  • 不同服务器环境下环境变量的可用性可能有差异,优先使用方法1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:45:36