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 ответа:
Попробуйте это (непроверено):
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/
Мы сталкиваемся с той же проблемой из-за ошибки, мы добавляем две косые черты на 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 сайта не шло вниз