我正在尝试编写此重定向
images / catalog / 1002/10002 / main-200x250.12345.jpg 链接到 images / catalog / 1002/10002 / main.jpg?w = 200&h = 250&vw = main
我尝试了以下规则:
rewrite "^/images/(.*)/([a-z0-9]+)-([0-9])x([0-9]).([0-9]{5}).(jpg|jpeg|png|gif|ico)$" /images/$1/$2.$6?w=$3&h=$4&vw=$2 break;
它不起作用,它返回404 not found错误。我不知道我在想什么。
当我删除双引号(“)时,也会出现此错误
“ rewrite”指令不以“;”结尾
而且我不清楚该标志的用途” ,以及何时应使用或避免使用它
我正在使用MAMP Pro v 5.2.2的Mac电脑上工作
答案 0 :(得分:1)
您忘记在正则表达式中添加宽度和高度数字的量词。尝试此操作(我为+
添加了两次,您可能想改用{X}
,其中X
是每个数字的位数(如果它始终是相同的位数) )):
rewrite "^/images/(.*)/([a-z0-9]+)-([0-9]+)x([0-9]+).([0-9]{5}).(jpg|jpeg|png|gif|ico)$" /images/$1/$2.$6?w=$3&h=$4&vw=$2 break;
您的常规表达式必须加引号,因为其中包含}
。
我认为nginx documentation about rewrite directive会在需要引用正则表达式时回答您的问题:
如果正则表达式包含“}”或“;”字符,则整个 表达式应该用单引号或双引号引起来。