ПРОЕКТЫ 


  АРХИВ 


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]

Re: два правила работают по отделности но не вместе


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: два правила работают по отделности но не вместе
  • From: VovansystemS <vovansystems@xxxxxxxxx>
  • Date: Fri, 11 Jan 2013 11:39:36 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=gE29KOTwIL4G8+rX5W9/aoT6QU6vy+v/YpJTq0/PORc=; b=KOcy3rrxJBBYae/z4ozXMBjjLz0QgjK1DwUONNiFlkzgPGDCYKxd3VjXoqSzrZ5rn+ XDnUrMKgKnGOHCxPy5J6vk5AH0Fa5dorubYOIt1kogTOG+Lii/tCqit9N43tiDFZyurC /d/CZnziWXx5F6DocB+5Jv/9iIqWf2tm3o/0pJriZMtYjOkc+YADPlbX0v0D4Vmq4FXe U3lO+ezast1YcAl9+Sc/n0N2qV8uCeQp/n5PTGLP60/r3vn7cbPMzC4DHR3jqguWXCXL J+Na1mHmo+ITKiTtvhEYvP9Dz2XWlpG7fXpsgqfqgQNiUO/VJj6NPA1IsbdKNuNGAUJ6 aebw==
  • In-reply-to: <3fbbb09df3807c8538d93f6eb6f00d70.NginxMailingListRussian@forum.nginx.org>
  • References: <CAAwq3jzgMdRCirV-OTZ2bhxYB7dG=KQgQQx9vU4bX7pFcc+32A@mail.gmail.com> <3fbbb09df3807c8538d93f6eb6f00d70.NginxMailingListRussian@forum.nginx.org>

>VovansystemS в предложенном вами варианте насколко я понимаю в просто
> отрезаете www это не покатит!
>Сайт проиндексирвоанный с ним нельзя изменить он и должен быть всегда с ним
я предлагаю делать перенаправление с www.site.ru/blabla.html на
site.ru/blabla.html всегда. Для поисковой оптимизации важно на самом
деле определиться с тем, будут ли все Ваши с www. или без оного и от
этого создавать конфигурационные файлы. Кстати, тот же Яндекс
позволяет легко подведить права на домен с www. и на домен без www. и
"склеить" их как один сайт, указав ему какой вариант имени является
глявным. В вебмастере гугла есть подобные иснтрументы. Поэтому я
всё-таки рекоммендую принять (если это возможно) один стандарт
относительно названия сайта и следовать ему.

>   if ($host ~* ^(www\.)(.+)) {
>      set $HBW $2;
>        root   /var/www/$HBW/web;
> }
в nginx есть замечательная возможность давать выделениям имена
(примеры тут 
http://nginx.org/ru/docs/http/ngx_http_core_module.html#server_name)
поэтому то, что написано выше можно переписать проще:
if ($host ~* ^(?:www\.)(?<HBW>.+)) {
     root   /var/www/$HBW/web;
 }
?<HBW> - создаёт переменную $HBW
?: - указывает, что содержимое выделения не следует сохранять в $1.
(хотя на самом деле там вообще можно не создавать выделения просто
убрав скобки - раз оно нигде не используется)

теперь непосредственно сам вопрос:
создайте отдельный сервер для обработки всех доменов с www.

server {
   server_name ~^www\.(?<SERVERNAME>.+)$;
   return 301 $scheme://$servername$request_uri$is_args$args;
}

а дальше оставьте сущетвующую конфигурацию без if-блока. Если домен
содежит www. вначале, то nginx сработает вышеуказанный сервер, а если
не содержит, то сервер по-умолчанию.

это, на мой взгляд, правильный ибо унифицированный подход.если все
сайты должны быть с www., тогда просто поменяйте содежимое блоков
(кроме server-name) местами. тогда все сайты без www. будут
перенаправлятся на домен с www.

Если же Вы всё-таки имеете дело с сайтами, унифицировать которые не
представляется возможным (каждый сам себе вебместер), тогда я бы
создал сервер, где в server_name разбирается на части и использовал
уже их в конфиге далее. К сожалению, сходу не могу написать такой
regexp, который будет выделять имя сайта в одну переменную, а поддомен
www. (при его наличии) в другую.
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.