花括号( 和 )从 Apache 到 Nginx 重写规则。

Posted

技术标签:

【中文标题】花括号( 和 )从 Apache 到 Nginx 重写规则。【英文标题】:Curly braces ( and ) from Apache to Nginx rewrite rules.花括号( 和 )从 Apache 到 Nginx 重写规则。 【发布时间】:2013-01-19 00:26:09 【问题描述】:

我有这个在 apache 上成功运行但返回错误或 nginx 的规则:

rewrite ^/saison-([0-9]1)$ /pages.php?cat_page=saison-$1&season=$1 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)$ /evenements.php?season=$1&title=$2 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)$ /evenements.php?season=$1&title=$2&place=$3&date=$4 last;
rewrite ^/saison-([0-9]1)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9-]+)/([a-z]+)$ /evenements.php?season=$1&title=$2&place=$3&date=$4&view=$5 last;

我得到了:*重新启动 nginx:[emerg]:指令“rewrite”没有被“;”终止在 /path/rwrules.nginx:1

如果我从重写规则中删除这 4 行,它会起作用。 有什么问题?

【问题讨论】:

【参考方案1】:

阅读此documentation。特别是:

注意:对于花括号( 和 ),因为它们同时用于正则表达式和块控制,为避免冲突,带有花括号的正则表达式要用双引号(或单引号)括起来。

例如这条线:

rewrite ^/saison-([0-9]1)$ /pages.php?cat_page=saison-$1&season=$1 last;

应该是:

rewrite "^/saison-([0-9]1)$" /pages.php?cat_page=saison-$1&season=$1 last;

这应该删除“;”语法错误(对于我没有检查它们是否有效的规则)。

【讨论】:

@regilero 你应该回答我刚刚提出的这个 Stack Exchange 问题,因为你的回答在这里为我解决了这个问题。那谢谢啦! serverfault.com/questions/569126/… 哦,它修复了一部分,有语法错误,但我仍然坚持我的问​​题。不过,谢谢。

以上是关于花括号( 和 )从 Apache 到 Nginx 重写规则。的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2:轴上的花括号?

Nginx基本配置

重复错误:“不再支持带有花括号的数组和字符串偏移量访问语法”与 phpmyadmin

Sequelize 普通对象返回空 - 花括号行为不端

在 Liquid 模板中输出文字花括号

爬虫+各种花括号处理 分析数据就要先处理数据