LINUX.ORG.RU

Nginx бесконечное перенаправление

 


0

2

Всем привет!

Столкнулся с такой штукой. В конфиге nginx есть:

#Убрать / на конце страницы
location ~ .+/$ {
rewrite (.+)/$ $1 permanent;
}

Соответственно когда в адресной строке site.ru/папка nginx добавляет «/» т.к. это папка, кусок конфига выше убирает на конце «/» и получаю ответ «Неверное перенаправление на странице. сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится».

Вопрос, как сделать так чтобы данное правило не распространялось на папки?


Попробуй так:

#Убрать / на конце страницы
location ~ .+/$ {
    if (-d $request_filename) {
        break;
    }
    rewrite (.+)/$ $1 permanent;
}

Deleted ()
Ответ на: комментарий от Deleted

Точно! Тут должна выдаваться 404 ошибка, но этого почему то не происходит, вот полный конфиг

server {
        server_name site.ru www.site.ru;

#Убрать / на конце страницы
location ~ .+/$ {
    if (-d $request_filename) {
        break;
    }
    rewrite (.+)/$ $1 permanent;
}
# Убрать /////// на конце страницы
if ($request_uri ~ "^[^?]*?//") {
            rewrite "^" $scheme://$host$uri permanent;
        }
## редирект с www
if ($host ~* ^www\.(.+)$) {
set $newhost $1;
rewrite ^ http://$newhost$request_uri permanent;
}
charset utf-8;
        access_log  /var/log/nginx/site.access.log;
        error_log /var/log/nginx/site.error.log;

 root   /var/www/site/public/;
        index index.php index.html index.htm;
        client_max_body_size 100m;

    location / {
#         proxy_pass http://172.17.100.12:80;

        try_files $uri $uri/ /index.php?q=$uri&$args;


	}    

	    
location ~* \.(css|js|gif|jpe?g|png|jpg|woff|svg)$ {

                expires 7d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";
                }

        location = /favicon.ico { access_log off; log_not_found off; }
        location = /robots.txt  { access_log off; log_not_found off; }


    error_page  404              /404.html;
    error_page  500              /500.html;
    location = /500.html {
                root /var/www/site/public/;
                internal;
        }

# location ~* ^/.+\.php {
location ~* ^/index\.php$ {
internal;

                root /var/www/site/public;
                try_files $uri /index.php =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
# доступ по паролю
auth_basic            "Restricted";
auth_basic_user_file  /var/www/site/pass/.htpasswd;


                fastcgi_param  SCRIPT_FILENAME /var/www/site/public$fastcgi_script_name;
            fastcgi_pass_header Cookie;         # Необходимо для передачи cookie в соответствующие переменные, напри$
            fastcgi_ignore_headers Cache-Control Expires Set-Cookie;    # Игнорируем заголовки, относящиеся к кеширо$
            fastcgi_cache_key "$server_addr:$server_port$request_uri|$cookie_phpsessid";        # Формируем уникальн$
            fastcgi_cache fastcgi_cache;        # Говорим о том, что использовать надо вышеобъявленную кеш-зону fast$
            fastcgi_temp_path  /tmp/nginx/temp 1 2;     # Указываем папку для хранения временных файлов
            fastcgi_cache_use_stale updating error timeout invalid_header http_500;     # Используем вариант из кеша$
            fastcgi_cache_valid 15s;    # Время жизни кеша для ответов 200, 301 & 302
#            fastcgi_cache_valid any 10s; # Таким образом можно закешировать любые ответы
            }
location ~* ^/.+\.php {
    return 404; }

}

vagon ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.