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