index internal redirect

Валентин Бартенев ne на vbart.ru
Вс Июн 19 21:25:05 MSD 2011


On Sunday 19 June 2011 20:19:31 Gena Makhomed wrote:
> "инвертируя результат проверки" - это как, - использовать
> для обработки запроса не-найденный и не-существующий файл?

Я напомню, изначально задача была поставлена такая: "делать внутренний 
редирект при нахождении файла (как сейчас делается для index)".

try_files  !$uri  @php;

Эту задачу решает. Если файл будет найден, то произойдет обработка в @php. 
Если нет, то запрос будет обработан в текущем локейшене.

> а если этого файла нет:
> 
> try_files  !$uri  @php;
> 
> то где произойдет обработка, разве не в том же самом location @php ?

Гм. Если бы было написано  try_files  $uri  @php;
то произошла бы в "том же самом location @php "
а поскольку ! изменяет результат проверки на обратный, и произойдет в текущем.

> http://www.lexa.ru/nginx-ru/msg34942.html

Я не увидел в примере по ссылке ничего схожего с моим предложением.

Мое (особенно второе, с использованием @) решение задачи не предполагает 
введение каких-либо новых значков и обозначений, а лишь расширяет возможности 
применение уже существующих, привычных.

Не надо из крайности в крайность бросаться, и говорить, что все, что 
использует односимвольные значки сразу уже становится похожим на sendmail. 

sendmail-фобия также опасна и деструктивна, как и sendmail-филия.

> если не понимать синтаксиса этого модификатора,
> то разумеется, что это будет страшнее и непонятнее.
> (хотя вчера/сегодня я детально расписал его семантику)
> 
> да, длиннее, зато не страдает читабельность конфига.
> у сендмейла вот сократили все по максимуму 1 символ == 1 опция.
> только вот что-то очень мало желающих поддерживать такие конфиги.

Зачем вводить какие-то новые операторы на вроде "::" и придумывать кучу новых 
ключевых слов, плодить сущности? А потом всех призывать изучать этот новый 
синтаксис, на описание которого у вас ушло аж несколько длиннющих писем в этой 
же ветке ниже.

И уж что-что, а длинна и громоздкость - читабельности не способствует.

Ну и сколько нового кода надо добавить, чтобы "распарсить" все возможные 
случаи записи:
 internal_redirect( @dir_list )::$uri/
 internal_redirect(@dir_list)::$uri/
 internal_redirect (@dir_list)::$uri/
 internal_redirect(@dir_list) :: $uri/
или нет, так нельзя?

Вы предлагаете введение абсолютно новой сущности, новой синтаксической 
конструкции, ранее нигде не используемой, и ни на что не похожей.

> почему нет?
> 
> try_files  internal_redirect( @php )::$uri
>             internal_redirect( @dir_list )::$uri/
>             =404
>             ;

Если откровенно, то мне это больше напоминает богомерзкое SEO, когда люди 
вместо того, чтобы писать:

Страна:
 - Англия
 - Франция
 - Германия
 - США

Пишут на сайтах:
 - Работа в Англии
 - Работа во Франции
 - Работа в Германии
 - Работа в США
 - Работа
 ...
 - Работа работа работа и глазу не за что зацепиться.

Я уж молчу, про то, сколько опечаток можно сделать набирая по многу раз:
internal_redirect( @dir_list )::$uri/

и о том, что вообще-то так строчки переносить не принято, тогда уж совсем, 
превратите try_files в блочную директиву и пишите:

 try_files {
	internal_redirect( @php )::$uri
	internal_redirect( @dir_list )::$uri/
	=404
}

хоть чуть-чуть красивее будет. Но опять же, это работа в, работа во, работа 
на, работа, работа, работа... да еще и ломание обратной совместимости.


> try_files  $uri.php на php =404;
> 
> сплошнойтекстбезпробеловплохочитается.

Сплошной текст без пробелов:

nginx-ru на nginx.org

http://lib.ru/SENDMAIL/sendmail_cf.txt

/home/vbart/Development/Nginx/ngx-ctpp2

internal_redirect

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


Подробная информация о списке рассылки nginx-ru