Nginx слияние косых черт перенаправление


Я использую nginx в моем Java-приложении, и моя проблема заключается в том, что nginx сливает косые черты, и я не могу перенаправить свой веб-сайт на правильную версию.

Например:

   http://goout.cz/cs/koncerty///praha/

Объединяется в

   http://goout.cz/cs/koncerty/praha/

И тогда я не могу распознать искаженный URL-адрес и выполнить перенаправление.

Я пытался установить

   merge_slashes off;

А затем:

    rewrite (.*)//(.*) $1/$2 permanent;

Но это не имеет никакого эффекта, и / / остается в URL.

Как я могу этого достичь?

4 4

4 ответа:

Попробуйте это (непроверено):

merge_slashes off;
rewrite (.*)//+(.*) $1/$2 permanent;

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

Вот так:

http://goout.cz/////cs/koncerty///praha/

Можно перейти к:

http://goout.cz/cs/koncerty///praha/

Затем, наконец:

http://goout.cz/cs/koncerty/praha/

Это работает хорошо, но для моей установки добавление port_in_redirect off; было необходимо.

Мы сталкиваемся с той же проблемой из-за ошибки, мы добавляем две косые черты на URL, и nginx вернет код ошибки 301 для url с двумя косыми чертами.

Решение для меня таково:

Добавьте merge_slashes off; в файл nginx.conf, а в разделе расположение добавьте rewrite (.*)//+(.*) $1/$2 break;

Настройка местоположения для меня выглядит следующим образом:

    location / {
        rewrite (.*)//+(.*) $1/$2 break;
        proxy_pass http://http_urltest;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_buffers 4096 32k;
        proxy_buffer_size  32K;
        proxy_busy_buffers_size 32k;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

После добавления этих двух строк, когда я обращаюсь к своему url с двумя косыми чертами, он возвращает результат с одной косой чертой.

Попробуйте это(только nginx и nginx с конфигурацией openresty) вы можете улучшить SEO сайта, выполнив эти 301 перенаправление

Пожалуйста, сохраните этот код в разделе сервера для вашего файла nginx site conf

server {

........
........

set $test_uri $scheme://$host$request_uri;
if ($test_uri != $scheme://$host$uri$is_args$args) {
    rewrite ^ $scheme://$host$uri$is_args$args? permanent;
}

location {
    ................
    ................
}

}

Его работа хорошо для меня и я использую этот код сейчас

Пример:-

Запрос url - http://www.test.com//test///category/item//value/

URL-адрес результата:- http://www.test.com/test/category/item/value/

301 перенаправление, чтобы SEO сайта не шло вниз