Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 301 редирект для нескольких страниц сайта
Hello!
On Wed, Sep 19, 2012 at 12:56:08AM -0400, anebilyca wrote:
> Приветствую!
>
> Немного о пациенте. Стоит nginx/0.7.65.
Just a side note: стоит обновится.
> Необходимо настроить 301 редирект с нескольких страниц сайта на подобные им,
> но более короткие.
>
> Самый первый вопрос, это как точно называется файл, в котором необходимо это
> всё прописывать? Например, в апаче это .htacces. А здесь?
А здесь - просто пишем в конфиге. Конфиг можно разбить на
несколько файлов с помощью директивы include, но не обязательно (и
обычно нежелательно, т.к. затрудняет чтение).
Note well: в linux'ах исторически сложилось, что вместо одного
конфига nginx.conf по умолчанию используется множество отдельных
файлов, включённых в nginx.conf с помощью директивы include.
Такой подход более удобен для автоматического конфигурирования, но
очень плох для начинающих. Поэтому если сомневаетесь, где что
писать - возможно имеет смысл на время отказаться от всех этих
sites-available/sites-enabled, и писать конфигурацию полностью в
nginx.conf.
> Ну и как я увидел, есть несколько вариантов реализации. Хотелось бы узнать у
> вас какой применим в моей ситуации и некоторые комментарии по вопросам,
> которые у меня возникли.
>
> И так.
>
> 1. Способ.
>
> Код:
> server {
> listen 80;
> server_name www.host.ru/1-page;
> rewrite ^ www.host.ru/2-page$request_uri? permanent; #301 redirect
> }
Это бессмысленная конструкция, в директиве server_name указывается
имя сервера, а не конкретной страницы. Подобные конструкции
применяются для перенаправления всего сервера целиком (e.g. чтобы
добавить/убрать "www."), но не годятся для перенаправления
конкретных страниц.
http://nginx.org/r/server_name/ru
[...]
> 2. Способ.
>
> Код:
> server {
> include redirect.conf;
>
>
> redirect.conf:
>
> location = /1-page { return 301 http://host.ru/2-page; }
> location = /3-page { return 301 http://host.ru/4-page; }
>
> }
> Можно ли употреблять такую структуру, если я буду редиректить на разные
> страницы, а не на главную, как я видел в одном примере?
Да, можно. Правда, в 0.7.65 подобная конструкция работать не
будет, "return 301 текст" работает начиная с 0.8.42. Нужно либо
обновиться, либо использовать
location = /1-page {
rewrite ^ http://host.ru/2-page permanent;
}
Maxim Dounin
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|