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

如何通过.htaccess重写规则移除URL连字符后关键词并实现重定向

解决.htaccess重定向:移除URL连字符后的第二个关键词

嘿,我来帮你搞定这个URL重定向的问题!你的需求是把类似/currency/bitcoin-btc这样的URL永久重定向到/currency/bitcoin,也就是去掉连字符后面的所有内容对吧?

先说说你现有规则的问题

你当前的规则RewriteRule ^currency/(.*)[a-z-](.*)$ /currency/$1 [R=301,L]逻辑不够精准:

  • (.*)是贪婪匹配,会尽可能多抓取字符,可能会把连字符前面的部分拆分开,导致重定向结果不符合预期
  • 这个规则会匹配很多不必要的URL,比如包含多个连字符或其他字母的URL,容易出现误匹配

正确的重写规则

直接用下面的规则替换你现有的配置,就能精准实现需求:

RewriteEngine On
RewriteRule ^currency/([^-]+)-.*$ /currency/$1 [R=301,L]

规则详解

让我拆解一下这条规则的每个部分,方便你理解:

  • ^currency/:精准匹配URL开头的/currency/路径,确保只处理这个目录下的URL
  • ([^-]+):这是关键的捕获组,[^-]表示匹配除了连字符之外的任意字符,+表示至少匹配一个字符,所以它会捕获连字符前面的所有内容(比如bitcoin)
  • -.*$:匹配连字符本身,以及连字符后面的所有内容直到URL结尾(比如-btc)
  • /currency/$1:重定向目标,$1就是我们刚才捕获的连字符前面的内容,最终会指向/currency/bitcoin
  • R=301:表示这是永久重定向,对SEO友好,浏览器和搜索引擎会记住这个重定向
  • L:表示这是最后一条规则,一旦匹配成功就停止处理后续的重写规则

测试验证

这条规则会完美处理以下场景:

  • 输入/currency/bitcoin-btc → 重定向到/currency/bitcoin
  • 输入/currency/ethereum-eth → 重定向到/currency/ethereum
  • 输入/currency/solana-sol → 重定向到/currency/solana

小提示

  • 测试阶段可以先用R=302临时重定向,确认所有URL都正确跳转后,再改成R=301,避免浏览器缓存错误的重定向结果
  • 确保你的Apache服务器已经启用了mod_rewrite模块,否则规则不会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:21:40