Редирект 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. |
Дата: 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/
.