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

基于URL结尾规则配置.htaccess实现301重定向

Apache RewriteRule 301重定向:处理单数字结尾的URL

原始URL

domain.com/bla-bla-bla-2/
domain.com/cvb-sdffgh-ffdds-2/
domain.com/ssss-asdfgh-fdsaxcv-2/
domain.com/fgh-fgh-fgh-3/
domain.com/dcv-qwe-vbn-4/
domain.com/dcv-qwe-vbn-2020/
domain.com/dcv-qwe-vbn-99/
domain.com/dcv-qwe-vbn-9/

期望跳转的目标URL

domain.com/bla-bla-bla/
domain.com/cvb-sdffgh-ffdds/
domain.com/ssss-asdfgh-fdsaxcv/
domain.com/fgh-fgh-fgh/
domain.com/dcv-qwe-vbn/
domain.com/dcv-qwe-vbn-2020/
domain.com/dcv-qwe-vbn-99/
domain.com/dcv-qwe-vbn/

现有规则的问题

你写的规则存在两个明显问题:

  1. 语法错误:正则表达式末尾多了一个右括号 ),直接导致规则无法被服务器解析
  2. 匹配范围不对:\d+ 会匹配任意长度的数字,像dcv-qwe-vbn-2020/、dcv-qwe-vbn-99/这类多位数结尾的URL也会被错误重定向,不符合需求

修正后的可用规则

如果是在服务器配置文件(比如httpd.conf)中使用:

RewriteRule ^/(.*)-(\d)/$ /$1/ [R=301,L]

如果是在.htaccess文件中使用(不需要开头的/):

RewriteRule ^(.*)-(\d)/$ /$1/ [R=301,L]

规则说明

  • ^(.*)-(\d)/$:
    • ^ 标记URL的起始位置
    • (.*) 捕获数字前面的所有内容(不含最后的-和数字)
    • -(\d) 精准匹配单数字前的连接符和单个数字(\d只匹配0-9中的一位)
    • / 和 $ 确保只匹配以“单数字+斜杠”结尾的URL
  • /$1/:将请求重定向到捕获的第一组内容,也就是去掉结尾单数字后的路径
  • [R=301,L]:R=301表示永久重定向(对SEO友好),L表示匹配到这条规则后就停止处理后续规则

这样配置后,只有结尾是单个数字加斜杠的URL会被重定向,多位数结尾的URL会保持原样,完全符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:35:12