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

如何用.htaccess重写含斜杠的URL参数为指定路径格式?

解决方案

你的问题出在RewriteRule的正则表达式上:原规则里的第二个捕获组[^/]+仅能匹配不含斜杠的单段字符,但你的fileUrl参数包含子文件夹的斜杠,所以这个正则只能抓到media,而非完整的media/streams.mpd。

修改后的.htaccess规则如下:

Options +FollowSymLinks -MultiViews
RewriteEngine On

# 仅当请求路径不是真实文件/目录时执行重写
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.+)$ /getfile.php?token=$1&fileUrl=$2 [QSA,L]

规则说明:

  • ^([^/]+)/(.+)$:
    • ^([^/]+):捕获第一个斜杠前的所有字符作为token(例如randomtoken)
    • (.+):捕获第一个斜杠后的全部内容(包含后续斜杠)作为fileUrl(例如media/streams.mpd)
  • RewriteCond %{REQUEST_FILENAME} !-f 和 RewriteCond %{REQUEST_FILENAME} !-d:避免将服务器上真实存在的文件或目录重写到getfile.php,防止干扰正常资源访问
  • -MultiViews:关闭内容协商功能,防止Apache自动匹配同名文件(比如把/randomtoken/media错误解析为/randomtoken/media.php)

这个规则可以完美支持带斜杠的fileUrl参数,同时保留MPD文件所需的路径结构,无需对URL进行编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:52:39