我有一个网站,在nginx上运行。我需要像这样重写URL:
domain.com/blabla/88-aaa-aaaaa-aaaa/qqqq-qqq11-2qq-qqq.html
对此
domain.com/blabla/aaa-aaaaa-aaaa/qqqq-qqq11-2qq-qqq
它的意思是 - 删除斜杠后的数字,然后是破折号,然后是“.html”扩展名。
为了实现这一点,我试图使用
location ~* \/[0-9]{1,4}(-.*)(\.html)$ {
......
}
但在位置测试仪中,它完全忽略破折号并匹配 .../88aaa...
,我想避免。然后我读到,如果表达式包含花括号,则必须在表达式周围使用单引号或双引号。所以我试过这个
location ~* "\/[0-9]{1,4}(-.*)(\.html)$" {
......
}
仍然没有运气......使用引号,它无法匹配两种情况下的位置。有人可以帮忙吗?
我不知道nginx,但我确实对正则表达式有所了解。你确定在破折号之前需要反斜杠吗?除了括号内,通常破折号并不特殊。
—
Scott
@Scott好,不是真的:)我以为我必须逃避它。只是在regex测试器中尝试并验证,它是不需要的。谢谢你的提示
—
j.kaspar
/
不需要逃脱。试试看: location ~* /[0-9]{1,4}(-.*\.html)$ {
@Toto谢谢。我需要在斜线后立即匹配数字,这就是为什么我把它抄去了。无论如何,我尝试了你的建议,但不幸的是,这种行为仍然是一样的
—
j.kaspar
nginx
在第一次尝试时没有重新启动(没有引号) - 它仍将运行先前的配置。第二次尝试(带引号,有或没有虚假的反斜线)对我有用。里面发生了什么 location
块?