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

如何移除URL末尾的pdf/并确保请求全记录?附PHP解决方案

原始问题

我想通过htaccess重写移除URL末尾的“pdf/”。访问 example.net/book/pages/26-27/ 会返回PDF,但地址会变成 example.net/book/pages/26-27/pdf/。

当前的文件结构如下:

ƒ 26-27/   {
    index.php {
        <?php  include callerloggerscript.php; 
               header('Location:pdf/');     ?>
    }
}
ƒ pdf/     {
    .htaccess  { Directory Index  pages-26-27.pdf }
     pages-26-27.pdf 
}

这个结构原本是为了实现两个目标:

  • 仅用文件夹名缩短URL
  • 通过请求记录脚本处理所有调用

当前方案能正常运行,但直接访问26-27/pdf/时,可以获取PDF但会绕过记录脚本。我希望客户端始终显示原始URL(不含末尾的pdf/),确保所有请求都被记录。我只懂基础的htaccess知识,多次尝试重写都失败了,求可行的实现方法。


优化解决方案

原实现逻辑过于复杂,其实不需要依赖htaccess重写,直接用PHP的readfile()函数就能输出PDF,同时完美满足需求:

<?php  
    include 'loggercode.php';

    $filename = "pages-26-27.pdf";
    header("Content-type: application/pdf");
    header("Content-Length: " . filesize($filename));
    readfile($filename);
?>

核心优势

  • 完全覆盖两个核心需求:所有请求都会被记录(通过引入日志脚本),URL仅保留短文件夹名(无跳转、无重写,客户端始终显示原始路径)
  • 彻底解决了原方案中直接访问pdf/路径绕过日志记录的问题

补充提示

如果是处理大文件,建议添加额外响应头(比如禁用缓存的相关头信息),但轻量使用场景下,当前方案已经足够稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:07:11