ПРОЕКТЫ 


  АРХИВ 


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: Валентин Бартенев <ne@xxxxxxxx>
  • Date: Fri, 25 Nov 2011 23:16:37 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=vbart.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:In-Reply-To:References:Date:Subject:To:From; bh=ru+x//fdQ3agrL9WgY8WIwOon6xs8OBFrd2b25FQuGs=; b=Yi/Z8499KfyhsaTM3N2mrtLFalCEF0MgjA3XB9d0ngKpq1JGtCZdYQ+eFEewtHzBSiYIQzUZzZoQnmf1y3sVTqiN8DN1CM/Z5djqnocVZS/XxsuseuhH34+ggTFnEJgXkqEIXo5EI/fNIUkuIoUVA691486HldIJd1TVugVWCjqduzPNDBsWAlG2UI4REtsj/6/bhFRLenBzFoiUjx56iLygIArt2hLj7cqD1f9dO/iJDF7t4KcoZ2S7J+0PFYcbmmz6+J4mp52V41Vtsz8vohzDEXzkRshLr19/9QVQOgOG6ygATMoE5Cj3qaR7+WJaEiu9eQiZZPhYsB4iyObbbg==;
  • In-reply-to: <CAFbRBHHF2hYDXcVHmoXNrp+VxcJLaVyoyGW0gctD5GjCrpNXHA@xxxxxxxxxxxxxx>
  • References: <CAFbRBHHF2hYDXcVHmoXNrp+VxcJLaVyoyGW0gctD5GjCrpNXHA@xxxxxxxxxxxxxx>

On Friday 25 November 2011 19:38:37 Юрий Гончаров wrote:
> Приветствую всех. Ковырял пол дня и так не смог побороть. Помогите
> разрешить задачу.
> 
> Есть http://domain.com
> Если файл (или папка) не существует для
> http://domain.com/anyfolder/somethingelseunknown то нужно реврайт на
> http://domain.com/anyfolder/front.php
> (если два уровня вложенности, все равно брать первую папку, т.е. для
> http://domain.com/anyfolder/anyfolderinside/somethingelseunknown
> нужен реврайт на http://domain.com/anyfolder/front.php)
> anyfolder - может быть любой.
> В тоже время если вызывать http://domain.com/somethingelseunknown или
> если при попытке реврайта на http://domain.com/anyfolder/front.php -
> http://domain.com/anyfolder/front.php - не будет существовать (или
> файла front.php нет или вообще нет папки anyfolder) - то тогда
> реврайтить на http://domain.com/public/front.php
> 
> Попробую обобщить
> 1. Если файл не существует И есть хотя бы одна папка в URI - то
> попробовать http://domain.com/anyfolder/front.php
> 2. (Если файл не существует И перейти по 1. не удалось) ИЛИ (в URI нет
> папок (типа http://domain.com/wrongfile)) то на
> http://domain.com/public/front.php
> 
> Очень жду. Спасибо
> 

Написали очень сложно.

Предположим, что все три кейса вы хотите обрабатывать в пределах одного 
локэйшена:

  location ~ ^(/[^/]+)/.+$ {
    try_files $uri $1/front.php /public/front.php =404;
  }

Если хотите в разных, то:
  
  location ^~ /public/front.php {
  
  }

  location ~ ^/[^/]+/front.php$ {
    try_files $uri /public/front.php;
  }
 
  location ~ ^(/[^/]+)/ {
    try_files $uri $1/front.php;
  }

--
Валентин Бартенев
  

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.