301 редирект со слешем на без слеша: 301 редирект со слешем и без него в конце URL

(.*)xxHG=12343″) {                         return 404;                         }

 

Редирект nginx с определенной страницы на главную

rewrite /article/name.html http://site,ru permanent;

 

Редирект с определенных адресов или сетей (ответ нужным кодом):

Необходим модуль гео 

apt install libnginx-mod-http-geoip

nginx.conf:

geo $bad_user {
        default 0;
        192.168.0.1 1;
        192.223.0.0/16 1;
        192.168.2.4 1;
}                         

server {

        if ($bad_user) {
                return 404;
            }   

}

 

 

 

1. 301 редирект с одной страницы на другую

Самый простой вариант


1

Redirect 301 /test-1/ http://site. (.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Дата: 24 января 2019 г. в 20:09:20

Автор: igel

apache 2.4 — Попытка перенаправления с косой чертой и без косой черты

спросил

Изменено 4 года, 3 месяца назад

Просмотрено 9к раз

Я переместил блог на поддомен, а на поддомене все категории изменились, поэтому я хочу сделать список из 301 редиректа со старого домена на поддомен (другой хостинг). 9(.*)$ http://domain.com/blog/$1/ [L,R=301] Редирект 301 /блог/тест/ https://new.domain.com/test/ Перенаправление 301 /blog/example/ https://new.domain.com/example/ (так далее…)

Это не работает, так как браузер обнаруживает слишком много перенаправлений. (.*)$ http://example.com/$1/ [L,R=301] выполняет перенаправление 301 на URL-адрес с косой чертой, добавленной для нас. Вы должны заменить domain.com своим URL-адресом.

2

Похоже, работает синтаксис:

 RedirectMatch 301 /blog/test/?$ https://new.domain.com/test/
 

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

url — Nginx вызывает 301 перенаправление, если нет завершающей косой черты

спросил

9 лет, 7 месяцев назад

Изменено 2 года, 1 месяц назад

Просмотрено 63к раз

Я запускаю nginx на виртуальной машине с использованием NAT, и у меня возникают проблемы с перенаправлением при доступе к нему с хост-машины.

Работает как положено

  • http://localhost:8080/test/index.htm : работает.
  • http://localhost:8080/test/ : работает.

Не работает должным образом

  • http://localhost:8080/test 9/])$ $1/ постоянный; корень /usr/share/nginx/html; try_files $uri = 404; #fastcgi_pass 127. 0.0.1:9000; fastcgi_pass unix:/tmp/php5-fpm.sock; fastcgi_index index.php; включить fastcgi_params; } error_page 500 502 503 504 /50x.html; местоположение = /50x.html { корень /usr/share/nginx/html; } }
    • url
    • перенаправление
    • nginx

    Я опубликовал возможное решение этой проблемы на serverfault; воспроизведено здесь для удобства:

    Если я правильно понял вопрос, вы хотите автоматически обслуживать, без использования перенаправления 301, http://example.com/foo/index.html, когда запрос на http://example.com/foo без косая черта в конце?

    Основное решение, которое мне подходит

    Если это так, я обнаружил, что эта конфигурация try_files работает:

     try_files $uri $uri/index.html $uri/=404;
     
    • Первый $uri точно соответствует uri
    • Второй $uri/index.html соответствует каталогу, содержащему index.
      html, где последний элемент пути соответствует каталогу. имя без косой черты
    • Третий $uri/ соответствует каталогу
    • Четвертый =404 возвращает страницу ошибки 404, если ни один из предыдущих шаблонов не совпадает.

    Взято из ответа Serverfault

    Моя обновленная версия

    Если добавить в блок сервера :

     индекс index.html index.htm;
     

    И измените try_files , чтобы он выглядел следующим образом:

     try_files $uri $uri/ =404;
     

    Тоже должно работать.

    8

    Несколько более простое решение, которое сработало для меня, — отключить абсолютные перенаправления с помощью absolute_redirect off; , как в следующем примере:

     сервер {
        слушать 80;
        имя_сервера локальный хост;
        абсолютная_переадресация выключена;
        местоположение /foo/ {
            прокси_пасс http://бар/;
        }
     

    Если я запускаю curl на http://localhost:8080/foo , я вижу, что заголовок Location в HTTP-ответе перенаправления задается как /foo/ , а не http://localhost /foo/ .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *