我几乎都是正则表达式的白痴,而我刚刚开始使用基于云的Nginx服务器,这与管理我的壁挂式Apache服务器有很大的不同。
我尝试重写以获得这样的干净网址:
www.domain.com/folder/red/abc ---> www.domain.com/folder/red.cfm?query=abc
www.domain.com/folder/blue/ab/cd/ef ---> www.domain.com/folder/blue.cfm?name=ab&city=cd&state=ef
www.domain.com/folder/blue/ab ---> www.domain.com/folder/blue.cfm?name=ab
我基本上试图在"文件夹"之后重写项目。子文件夹重写为静态.cfm页面。其中一些.cfm页面有零个,一个,两个或三个URL变量;变量的数量不固定或一致。
我一直在阅读关于重写和try_files的 很多 ,而且我已经尝试了几百种不同的重写版本,我只是可以'似乎找到了解决方案。
例如,我尝试过:
location /folder/blue {
rewrite ^/folder/(.*)?$ /folder/blue.cfm?name=$1 last;
}
这让我绝对无处可去。我会发布我的整个conf文件,但由于默认服务器设置添加了其他内容,因此 long 。
我会爱使这个字符串尽可能简单,但我真的需要帮助。我很感激!
答案 0 :(得分:0)
为了将来参考,它将有助于制定规范。
这似乎是您提供的唯一规范:
www.domain.com/folder/red/abc ---> www.domain.com/folder/red.cfm?query=abc www.domain.com/folder/blue/ab/cd/ef ---> www.domain.com/folder/blue.cfm?name=ab&city=cd&state=ef www.domain.com/folder/blue/ab ---> www.domain.com/folder/blue.cfm?name=ab
以下解决方案应100%满足上述"规范":
location /folder/red/ {
rewrite ^(/folder/\w+)/(\w*)$ $1.cfm?query=$2 last;
return 410;
}
location /folder/blue/ {
rewrite ^(/folder/\w+)/(\w*)$ $1.cfm?query=$2 last;
rewrite ^(/folder/blue)/(\w*)/(\w*)/(\w*)$ $1.cfm?query=$2&city=$3&state=$4 last;
return 410;
}