我试图用nginx创build一个重写规则,它用一个参数重写一个不存在的图像uri给dynamic页面,但是失败。
/images/395.4b2a-c6b.large-red/car-image.jpg
至
/thumb.php?param1=4b2a6aa¶m2=c6bc&id=395&size=large&color=red
请求中的参数详细信息是:
395 . 4b2a - c6b . large - red /blabla-image.jpg id . 4 char hash - 3 char hash . size - color
颜色受限于:red | 蓝色| 绿色
尺寸也是有限的:小| 大
我的非工作重写规则是:
location ~* \.(jpg)$ { rewrite ^/images/([0-9-]+)\.[a-zA-Z0-9]{4}+\-[a-zA-Z0-9]{3}+\.(.*)\-(.*)/(.*)$ /thumb.php?id=$1¶m1=$2¶m3=$3&size=$4&color=$5 last; }
这条规则有什么问题? 有任何想法吗?
使用Nginx的1.4.2,你的位置产生一个消息的错误…
nginx:[emerg]指令“重写”不是以“;”结束 in / path / to / conf
这是因为,根据Nginx文档 …
如果正则expression式包含“}”或“;”字符,则整个expression式应该用单引号或双引号括起来。
通过将重写条件包含在引号中来修复它。
这条规则有什么问题? 有任何想法吗?
你错过了大括号。
这是工作解决scheme…
rewrite "^/images/([0-9-]+)\.([a-zA-Z0-9]{4}+)\-([a-zA-Z0-9]{3}+)\.(.*)\-(.*)/(.*)$" /thumb.php?id=$1¶m1=$2¶m3=$3&size=$4&color=$5 last;
您的解决scheme可以进一步改善,如…
rewrite "^/images/([0-9-]+)\.([a-zA-Z0-9]{4}+)\-([a-zA-Z0-9]{3}+)\.([a-zA-Z]+)\-([a-zA-Z]+)/(.*)$" /thumb.php?id=$1¶m1=$2¶m3=$3&size=$4&color=$5 last;