ModRewrite 规则 - 如果选择器不存在则跳过

问题描述 投票:0回答:1

我有一种情况,我需要分别编写带有和不带有选择器的网址。

例如

  1. URI /feeds/mydata.json 应转到 /content/feeds/mydata/app.json
  2. URI /feeds/mydata.sale.json 应转到 /feeds/mydata/app.sale.json
  3. URI /feeds/mydata.sale.big.json 应转到 /feeds/mydata/app.sale.big.json

到目前为止我所拥有的:

RewriteRule ^/feeds/([^.]*).(.*).json /content/feeds/$1/app.$2.json [PT,L]

RewriteRule ^/feeds/(.*).json /content/feeds/$1/app.json [PT,L]

问题是即使没有选择器,第一条规则也会重写。所以情况 1 从 /feeds/mydata.json 到 /feeds/mydata/app..json

有没有办法可以声明一个条件来检查选择器是否存在。 请注意,可以有多个选择器,如情况 3 所示。

apache mod-rewrite aem selector dispatcher
1个回答
0
投票

模式

^/feeds/([^.]*).(.*).json
肯定会匹配对
/feeds/mydata.json
的请求。那是因为你的正则表达式很模糊,有点:

请记住,正则表达式中的文字点(“.”)将匹配any单个字符。知道你会明白

([^.]*).(.*).json
确实会匹配
mydata.json

试试这个:

^/?feeds/([^.]*)\.(.+)\.json$
© www.soinside.com 2019 - 2024. All rights reserved.