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

如何用.htaccess重定向含括号URL,避免括号内容成为%变量

URL重定向:移除括号及内容的实现方案

针对将example.com/example/(justsometext)/id-123这类URL重定向到example.com/example/id-123的需求,核心是转义URL中的字面括号,避免正则引擎将其识别为捕获组(即不会把括号内内容当成%1/$1这类变量)。以下是主流服务器的具体实现:

Apache(mod_rewrite)

在.htaccess或服务器配置文件中添加规则:

RewriteEngine On
# 匹配带括号内容的URL,重定向到移除括号部分的地址
RewriteRule ^example/\([^)]+\)/(id-\d+)$ /example/$1 [L,R=301]

规则说明:

  • \(和\):转义字面括号,告诉正则引擎这是需要匹配的普通字符,而非捕获组标记
  • [^)]+:匹配括号内的任意内容(直到遇到右括号为止)
  • (id-\d+):仅将末尾的id-xxx部分设为捕获组($1),用于重定向后的路径
  • [L,R=301]:L表示这是最后一条规则,R=301表示永久重定向(需临时重定向可改为R=302)

Nginx

在Nginx配置文件的server块内添加规则:

location /example/ {
    rewrite ^/example/\([^)]+\)/(id-\d+)$ /example/$1 permanent;
}

规则说明:

  • 同样通过\(和\)转义字面括号,避免被识别为捕获组
  • permanent对应301永久重定向,临时重定向可改为redirect
  • 仅捕获并保留末尾的id-xxx部分,替换掉中间的括号及内容

如果需要匹配更通用的场景(比如id-xxx前的路径不固定),可以调整正则为:

# Apache通用版:匹配任意路径下的(xxx)部分并移除
RewriteRule ^(.*)/\([^)]+\)/(.*)$ /$1/$2 [L,R=301]
# Nginx通用版
rewrite ^/(.*)/\([^)]+\)/(.*)$ /$1/$2 permanent;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:45:52