为什么我的网址重写规则无法正常工作?

时间:2019-03-26 16:39:28

标签: nginx url-rewriting

我正在尝试编写此重定向
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电脑上工作

1 个答案:

答案 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会在需要引用正则表达式时回答您的问题:

  

如果正则表达式包含“}”或“;”字符,则整个   表达式应该用单引号或双引号引起来。