ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

301 Редирект на основании существования document root


  • To: nginx-ru@xxxxxxxxx
  • Subject: 301 Редирект на основании существования document root
  • From: Горан Петрыч <norman.k77@xxxxxxxxx>
  • Date: Mon, 21 Oct 2013 13:08:32 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ApoPdF4wOcXmQiQfqV/aUtKjApBsO0dKWydxvSyaPFA=; b=Y9qmK8Ep2MCz7mU5RKvNmcdyu4dVNTGjGf8jr0hj+FgpPhO+wlDIhUr+ceEivRV5Z4 tl+wpcMsrhAdpChbmcUbdqlpyODoA1dlHNRldlckGd+RJeO4stwprWFB0R/eO19lR2A3 x1DOkS5LTjdEhVmojuI5MxqDGtMI8U9Y/l0fXUsaCAWVwHKI0NL24prxYzfzlYHuex/t XSbU9+5Zm9DCXubpQ8DyUA8DjgYmekrGAkmpgcyTL8LLtWybgQ9+rEAv9L+9mK9CFXXd kYYkI3a8qvjaX26PWFtSeC4t/R60ROGiBqNN01lX+LGzL76BgkIZZjn4PjI8m5+toYES dyAg==

Добрый день!

Захотелось создать универсальный server_name ~^(?P<site>.+)$; root /var/www/$site/pub; 
Все хорошо и работает. Но захотелось пойти дальше: 

Если в /var/www/ лежит фолдер, который начинается с www, например www.site.com, то делать 301 редирект с site.com -> www.site.com

Если же в /var/www/ лежит фолдер, который начинается без www, например site.com, то делать 301 редирект с www.site.com -> site.com

Т.е. проверять наличие фолдера. Первое, что пришло на ум - это создать выше основной секции, дополнительную:

server_name ~^(?P<w>www)\.(?P<site>.+)$;

 if (!-d /var/www/$w.$site/pub) {
        return 301 http://$site$request_uri;
    }
 root /var/www/$site/pub;

Это решает проблему когда нам нужно сделать 301 с www.site.com -> site.com

Прошу помощи в том, как реализовать схему наоборот: 301 с site.com ->  www.site.com
Не могу додуматься.

В данный момент конфиг выглядит так: 


server_name ~^(?P<w>www)\.(?P<site>.+)$;

 if (!-d /var/www/$w.$site/pub) {
        return 301 http://$site$request_uri;
    }
 root /var/www/$site/pub;
......


server_name ~^(?P<site>.+)$
root /var/www/$site/pub; 
.......
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.