Welcome! Log In Create A New Profile

Advanced

Re: добавление слэшей в конец адресов без оных

Maxim Dounin
December 06, 2010 09:34PM
Hello!

On Mon, Dec 06, 2010 at 08:47:00PM -0500, anon wrote:

> Уже который раз задаюсь этим вопросом,
> спрашивал то там, то здесь. Но никто так
> и не смог предложить рабочий способ.
>
> Где-то видел потенциально возможные
> варианты:
> [code]if (!-e $request_filename)
> {
> rewrite ^/(.*[^/])$ $1/ permanent;
> }[/code]
>
> [code]location ~ ^(.*[^/])$ {
> if (!-e $document_root/$1) {
> rewrite ^(.*) $1/ permanent;
> }
> }[/code]
>
> А как нужно правильно? Чтобы и
> физические файлы читались, и редирект
> работал корректно.

Как-то так, чтобы и файлы отдавались, и статические индексы в
каталогах работали, а для всего что не найдено - редирект с
добавлением / и на бекенд (не проверял, но должно работать):

location / {
try_files $uri @redirect;
}

location ~ /$ {
try_files $uri/index.html @fallback;
}

location @redirect {
rewrite ^ $uri/ permanent;
}

location @fallback {
fastcgi_pass/proxy_pass/...
}

Для 0.7.1 .. 0.8.41 понадобится ещё

location = / {
try_files $uri/index.html @fallback;
}

Если статические индексы в каталогах не нужны - соответствующий
try_files ... @fallback можно заменить на fastcgi_pass/... сразу.
Ну и соответственно location @fallback убрать за ненадобностью.

Можно ещё то же самое сделать через error_page 404, будет немного
быстрее и чуть-чуть надёжнее (на 1 syscall меньше, и нет
возможности для race'а при удалении статических файлов), но конфиг
получится чуть сложнее.

А вот if'ы использовать не надо, оно тут всяко хуже try_files, а в
зависимости от ситации может так стукнуть - мало не покажется.
Don't do it, it hurts. http://wiki.nginx.org/IfIsEvil

Maxim Dounin

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

добавление слэшей в конец адресов без оных

anon December 06, 2010 08:47PM

Re: добавление слэшей в конец адресов без оных

Maxim Dounin December 06, 2010 09:34PM

Re: добавление слэшей в конец адресов без оных

Илья Шипицин December 06, 2010 11:52PM

Re: добавление слэшей в конец адресов без оных

Igor Sysoev December 07, 2010 02:32AM

Re[2]: добавление слэшей в конец адресов без оных

Михаил Монашёв December 07, 2010 03:02AM

Re: добавление слэшей в конец адресов без оных

anon December 07, 2010 06:15PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 209
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready