Welcome! Log In Create A New Profile

Advanced

Re: index internal redirect

Gena Makhomed
June 17, 2011 04:24PM
On 16.06.2011 21:59, Igor Sysoev wrote:

>>> Сейчас при нахождении индексного файла делается внутрений редирект.
>>> Это позволяет работать конфигурациям типа
>>>
>>> location / {
>>> index index.php;
>>> }
>>>
>>> location ~ \.php$ {
>>> ...
>>> }
>>>
>>> Но иногда нужно, чтобы обработка проиходила без редиректа,

кроме случая "запрещения явного запроса /index.html", какие еще
могут быть причины для обработки без редиректа, если не секрет ?

>>> например, для запрещения явного запроса /index.html,
>>> хотя это можно решить так:
>>>
>>> location = / {
>>> index index.html;
>>> }
>>>
>>> location = /index.html {
>>> internal;
>>> }

немножко другой случай, у сайта стоит index index.php;
и администратор хочет запретить явный запрос к /index.php

если будет "обработка индексного файла без внутреннего редиректа" -
то в этом случае в ответ на запрос клиента будет отдан php-исходник

а ведь сайтов с динамическими индексными страницами index.php
больше в современном интернете, чем со статическими index.html

если "обработка индекского файла без внутреннего редиректа" нужна
только "иногда", может быть для этого случая хватит и существующего
уже сейчас функционала location = / { try_files /index.html =404; } ?

> Возможно, имеет можно что-то придумать со звёздочками, скобочками
> и тому подобному.

таким образом сейчас синтаксис конфигурационного файла nginx
начинает плавно дрейфовать в сторону апачевского mod_rewrite ?
а вот что было год назад: http://www.lexa.ru/nginx-ru/msg34942.html

> Например, сейчас try_files поддерживает слэш
> в конце параметра, обозначающий тестирование каталога, и знак равно
> для обозначения кода ошибки для fallback'а:
>
> try_files $uri $uri/ =404;
>
> Для try_files хотелось бы придумать ещё два модификатора - делать
> внутренний редирект при нахождении файла (как сейчас делается для index)
> и проверка абсолютного пути (а не относительно root/alias).
> Например, абсолютный путь - два начальных слэша:
>
> try_files //path/to/maintenance.html $uri $uri/ @php;

если планируется когда-то делать полноценную версию nginx для windows,
то синтаксис //path/to/maintenance.html для указания абсолютного имени
файла не очень хорош: //"C:\\Documents and settings\\path\\to\\file"

может быть такой вариант, с помощью префикса "absolute_path::" ?

try_files absolute_path::/path/to/maintenance.html $uri $uri/ @php;

ведь такая возможность будет нужна очень редко, и кроме того,
такой синтаксис - // - является потенциально очень опасным,
например, если кто-то вместо /etc/passwd; случайно ошибется
и наберет в конфиге //etc/passwd; - тогда путь из относительного
превратится в абсолютный. что-то аналогичное есть в C с '=' и '=='.

аналогично и с внутренним редиректом:

try_files internal_redirect::/system/maintenance.html $uri $uri/ @php;

и, комбинация этих двух параметров в произвольном порядке:

try_files absolute_path::internal_redirect::/system/maintenance.html

или

try_files internal_redirect::absolute_path::/system/maintenance.html

по крайней мере, этот вариант расширения синтаксиса try_files находится
достаточно далеко от синтаксиса апачевского mod_rewrite и sendmail.cf.

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

если надо иметь возможность указывать какие-то дополнительные параметры
для этих модификаторов, тогда можно в дальнейшем расширить синтаксис еще
дальше:

internal_redirect( дополнительные параметры )::/system/maintenance.html

или

internal_redirect{ дополнительные параметры }::/system/maintenance.html

--
Best regards,
Gena


_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

index internal redirect

Igor Sysoev June 16, 2011 02:28PM

Re: index internal redirect

Valery Kholodkov June 16, 2011 02:34PM

Re: index internal redirect

Igor Sysoev June 16, 2011 03:00PM

Re: index internal redirect

Valery Kholodkov June 16, 2011 03:40PM

Re: index internal redirect

Gena Makhomed June 19, 2011 10:30AM

Re: index internal redirect

Gena Makhomed June 19, 2011 10:44AM

Re: index internal redirect

Валентин Бартенев June 16, 2011 04:20PM

Re: index internal redirect

Gena Makhomed June 19, 2011 08:18AM

Re: index internal redirect

Валентин Бартенев June 19, 2011 11:48AM

Re: index internal redirect

Gena Makhomed June 19, 2011 12:20PM

Re: index internal redirect

Валентин Бартенев June 19, 2011 01:28PM

Re: index internal redirect

Gena Makhomed June 19, 2011 03:20PM

Re: index internal redirect

Gena Makhomed June 17, 2011 04:24PM

Re: index internal redirect

Gena Makhomed June 19, 2011 07:52AM

Re: index internal redirect

Gena Makhomed June 19, 2011 08:50AM

Re: index internal redirect

ruv June 20, 2011 03:54AM

Re: index internal redirect

Maxim Dounin June 16, 2011 03:58PM

Re: index internal redirect

Kirill A. Korinskiy June 16, 2011 04:00PM

Re: index internal redirect

Andrey N. Oktyabrski June 17, 2011 12:56AM

Re: index internal redirect

Gena Makhomed June 19, 2011 09:10AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 219
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready