Nginx如果cookie try_files重写

时间:2015-03-02 11:55:15

标签: nginx configuration

我的网站结构是

/public/index.php /public/en.html /public/zh_cn.html


我需要做什么?

  • / user / login / user / home之类的所有请求都应该发送到index.php,除了/ / index / index / index。
  • 如果cookie密钥lang是en,则应将/ / index / index / index发送到en.html,如果cookie密钥lang = zh_cn,则应将其发送到zh_cn.html.if cookie lang为空然后显示en.html。

这里是Nginx配置:

location / {
index  index.php;
if ($http_cookie ~* "lang=en"){
    rewrite ^/$ /en.html;
    rewrite /index /en.html;
    rewrite /index/index /en.html;
}   
if ($http_cookie ~* "lang=zh_cn"){
    rewrite ^/$ /zh_cn.html;
    rewrite /index /zh_cn.html;
    rewrite /index/index /zh_cn.html;
}   

root    /www/wwwroot/public;
try_files $uri $uri/ /index.php?q=$uri&$args;

}

但所有请求,但/ / index / index / index将返回404;我在谷歌搜索,发现

  

http://wiki.nginx.org/IfIsEvil

  # try_files wont work due to if

    location /if-try-files {
         try_files  /file  @fallback;

         set $true 1;

         if ($true) {
             # nothing
         }
    }

这意味着if和try_files不能同时使用,但我会用if if测试cookie值来决定使用哪个html;

任何其他解决方案?

0 个答案:

没有答案