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

如何在.htaccess中实现未编码#与编码%20的URL重写

NLM分类系统.htaccess重定向规则修复方案

问题分析

你需要为NLM分类系统配置.htaccess重定向,将形如https://w3id.org/NLM/QV%20268.5的URL重定向到https://classification.nlm.nih.gov/schedules/QV#QV%20268.5,但原有规则存在两处核心问题:

  • 正则未匹配路径中的NLM/前缀,导致匹配逻辑失效
  • 目标字符串中的%20被Apache误解析为RewriteCond反向引用(%2),最终变成0,锚点部分错误显示为QV0268.5
  • 无法同时实现#不编码、空格转为%20的需求

可行配置方案

修正后的.htaccess规则如下:

RewriteEngine On
RewriteBase /

# 重定向NLM分类URL到官方系统
RewriteRule ^NLM/([A-Z]{1,2})\s+([\d\.A-Z]+)$ https://classification.nlm.nih.gov/schedules/$1#$1\%20$2 [R=301,NE,L]

关键调整说明

  • 正则匹配修正:添加NLM/前缀,确保匹配正确的路径结构;用\s+替代\ ,支持匹配一个或多个空格(兼容URL解码后的空格字符)
  • 转义特殊字符:将目标中的%20改为\%20,避免Apache将%2识别为RewriteCond反向引用,保证最终锚点中的空格以%20形式呈现
  • NE参数作用:NE(NoEscape)参数确保#作为锚点分隔符不被编码,同时保留转义后的\%20为%20,完美满足需求

验证效果

配置后,访问https://w3id.org/NLM/QV%20268.5会正确重定向到:
https://classification.nlm.nih.gov/schedules/QV#QV%20268.5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:43:13