regex 根据URL中存在的ID(较低/较高)在.htaccess中重定向

w8f9ii69  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(106)

我正在努力与重定向,在一开始缝给我一样简单,但它不是。我想做一个重定向.htaccess文件的基础上存在于输入的URL的数字ID。例如https://example.com/bla-id200000.html

ID可以有6位或7位数字
我的第一次尝试是问chatgpt,它给了我一些线索,但最终浪费了我大约2个小时的时间,因为它的解决方案不起作用。根据chatgpt的说法,问题是RewriteCond不支持像<这样的直接比较运算符来捕获组匹配。
谁能给予我帮个忙吗?任何提示将不胜感激:)
我试

RewriteCond %{REQUEST_URI} ^/([^/]+)-id(\d+)\.html$
RewriteCond %2<200000
RewriteRule .* https://subdomain.example.com/item?id=%2 [L]

RewriteCond %{REQUEST_URI} ^/([^/]+)-id(\d+)\.html$
RewriteRule .* item?id=%2 [L,QSA]

结果是:内部服务器错误

i7uq4tfw

i7uq4tfw1#

如果你有Apache 2.4+,你可以使用expr和数值运算符,它们是:

  • -eq等于
  • -ne不等于
    • 低于
  • -le低于或等于
  • -gt大于
  • -ge大于或等于

所以你可以用这个代替RewriteCond %2<200000

RewriteCond expr "%2 -lt 200000"

还有一个整数比较integercomp,但我没有找到它的使用示例,可能类似于RewriteCond integercomp %2 -lt 200000

vwkv1x7d

vwkv1x7d2#

我终于拿到了!

RewriteCond   "%1" "<200000"

上面的工作很好。

相关问题