apache htaccess RewriteRule redirect regex

eufgjt7s  于 2023-10-23  发布在  Apache
关注(0)|答案(1)|浏览(132)

我正在尝试重定向来自http://www.xyz.com.au/lid/cid_855_1404172的URL请求

http://www.xyz.com.au/lid/1404172
我的正则表达式匹配最后一个下划线后的数字,但最终的URL仍然附加了我试图省略的部分

RewriteRule ([^_]+)$ /lid/$1

结果是:
http://www.xyz.com.au/lid/cid_855_/lid/1404172
我做错了什么?

wsewodh2

wsewodh21#

为了能够匹配和替换部分,您需要匹配URI的所有部分,而不是部分匹配。
您可以使用此重定向规则:

RewriteRule ^(.+/)?[^/]*_([^_]+)/?$ /$1$2 [L,R=301,NE]

所用正则表达式的详细信息:

  • ^:开始
  • (.+/)?:匹配捕获组#1中任何字符的1+后跟/
  • [^/]*:匹配0个或多个非/的字符(最长可能匹配;贪婪)
  • _:匹配_
  • ([^_]+):匹配1+捕获组#2中不是_的任何字符
  • /?$:匹配可选/和结束锚

相关问题