【问题标题】:RewriteRule Detecting numbers greater than 9RewriteRule 检测大于 9 的数字
【发布时间】:2011-11-03 20:59:42
【问题描述】:

我正在尝试检测 URL 末尾大于 9 的数字。例如:

“...com/celtic-jewelry/traditional/10”

我在我的 .htaccess 中使用两个单独的行作为组合工作(第一行检测数字小于 10,第二行检测数字超过 9,但我想知道正确的方法是什么?我的 .htaccess 在下面,谢谢!

RewriteRule ^celtic-jewelry/([a-z-'/]+)/([0-9])$ /product.php?flags=$1&page=$2 [L]

RewriteRule ^celtic-jewelry/([a-z-'/]+)/(.[0-9])$ /product.php?flags=$1&page=$2 [L]

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    如果我猜对了:

    RewriteRule ^celtic-jewelry/([a-z-'/]+)/([1-9][0-9]+)$ product.php?flags=$1&page=$2 [L]
    

    【讨论】:

      【解决方案2】:

      用下面的一条规则来代替你的两条规则怎么样:

      RewriteRule ^celtic-jewelry/([a-z'/-]+)/([0-9]+)$ /product.php?flags=$1&page=$2 [L]
      

      这里[0-9]+ 的意思是“一个或多个数字0-9”。这样就可以在一条规则中捕获所有 1、2 或更多数字的数字。尽管您的问题的标题是关于大于 9 的数字,但上下文清楚地表明您正在尝试捕获所有数字,无论是 1、2 还是更多数字。

      另外,请注意在[a-z'/-]+ 中,我将第二个- 移到了括号的末尾。您将其写为[a-z-'/]+,但问题在于第二个- 可以充当范围运算符,而我认为您的意图是将其用作文字破折号字符。要防止 - 充当范围运算符,您必须将其放在括号中的第一个或最后一个,或者使用反斜杠 (\-) 将其转义。

      【讨论】:

      • 两位数有效吗?但我需要它适用于任意位数。
      • 已编辑以使这一点更清楚。它适用于任意位数。
      • 请注意,这会捕获/00
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      相关资源
      最近更新 更多