Как сделать редирект (301, 302). Общая тема

sivrem
На сайте с 24.02.2017
Offline
1
#441
RA2:
Я не зря ведь подчеркнул NGINX, я надеюсь,вы в курсе что это? а не тупо берете с гугла все подряд!

По теме, нигде не нашел рабочего варианта 301 редиректа по 404 ошибке на морду, ребят не ужели никто не знает? )

тогда у них смотрите http://nginx.org/ru/docs/http/ngx_http_core_module.html#error_page

adel92
На сайте с 04.01.2012
Offline
334
#442

Вот тут можно сконвертировать любое правило с htaccess в nginx

https://winginx.com/ru/htaccess

NVMe VDS (https://well-web.net/nvme-vps) с поддержкой 24/7 - от 545 руб.! Безлимитный хостинг (https://well-web.net/ssd-hosting) - от 129 руб.! Домен в подарок! Перенос бесплатно! Заказывайте сейчас, и получите скидку 50%! Заходи! (https://well-web.net/limited-offers)
18_01
На сайте с 05.10.2007
Offline
80
#443

Приветствую. Нуждаюсь в помощи знатоков! Подскажите как сделать редирект в .htaccess по правилу:

Имеем адрес вида: yandex.ru/catalog1/catalog2/catalog3/catalog4/ ...

Нужно все каталоги начиная от catalog2 и глубже редиректить в catalog1

Т.е. должно получиться так:

yandex.ru/catalog1/catalog2/

yandex.ru/catalog1/catalog3/

yandex.ru/catalog1/catalog4/

...

Malcolm
На сайте с 02.05.2007
Offline
119
#444

Как это вы из одного адреса сразу три пытаетесь получить?

Редирект всех вложенных каталогов в самый первый из указанных как-то так будет

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.+) http://site.ru/$1/ [R,L]
</IfModule>
18_01
На сайте с 05.10.2007
Offline
80
#445
Malcolm:
Как это вы из одного адреса сразу три пытаетесь получить?
Редирект всех вложенных каталогов в самый первый из указанных как-то так будет

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.+) http://site.ru/$1/ [R,L]
</IfModule>

Спасибо за помощь, но работает немного не так как нужно.

Во-первых редиректит все файлы (css, js и т.д.), а нужно только страницы сайта

Во-вторых редирект идет не так. Объясню на примере:

Адрес: yandex.ru/catalog1/catalog2/catalog3/catalog4/

Редирект сюда: yandex.ru/catalog1/catalog4/

Адрес: yandex.ru/catalog1/catalog2/catalog3/

Редирект сюда: yandex.ru/catalog1/catalog3/

Адрес: yandex.ru/catalog1/catalog2/

Редирект сюда: yandex.ru/catalog1/catalog2/

Т.е. смысл просто сократить длинную часть урла.

webiumpro
На сайте с 20.03.2017
Offline
39
#446
18_01:
Во-первых редиректит все файлы (css, js и т.д.), а нужно только страницы сайта

Для этого нужно перед RewriteRule добавить:

RewriteCond %{REQUEST_FILENAME} !-f
Копирование лендингов. Разработка на фреймворке сервисов. Создание сайтов (/ru/forum/994418)
Malcolm
На сайте с 02.05.2007
Offline
119
#447

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ http://site.ru/$1/$4/ [R,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ http://site.ru/$1/$3/ [R,L]
</IfModule>
18_01
На сайте с 05.10.2007
Offline
80
#448
Malcolm:
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ http://site.ru/$1/$4/ [R,L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ http://site.ru/$1/$3/ [R,L]
</IfModule>

Теперь редиректит правильно. Файлы css, js пропускаются. Однако у картинок правило почему-то срабатывает и они не работают. В чем может быть причина?

---------- Добавлено 05.04.2017 в 15:40 ----------

18_01:
Теперь редиректит правильно. Файлы css, js пропускаются. Однако у картинок правило почему-то срабатывает и они не работают. В чем может быть причина?

Разобрался. Спасибо всем!

L9
На сайте с 06.04.2017
Offline
0
#449

Всем доброго времени суток!!!

Дело в том что на сайте стоял мод чпу и генерировал ссылки вида:

moisait.ru/forum-multfilm-f=21.html

в nginx был прописан редирект

location /forum {

rewrite ^/forum-(.*)-(.*).html /viewforum.php?$2 last;

}

по дефолту было так

moisait.ru/viewforum.php?f=21

Как теперь прописать, что бы редиректило на дефолтные значения?

Уже все перековырял, пробовал вот так

location /forum {

rewrite ^/viewforum.php?(.*) /forum-(.*)-(.*).html$2 last;

}

Но ни чего не выходит(((

S
На сайте с 30.09.2016
Offline
469
#450

leon99, ничего не понятно!

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий