Zhzves: раньше в разделе сайта было формирование урлов по принципу site.ru/1/11. 1-id категории, 11- id статьи. Сейчас site.ru/category/article , где category - алиас категории, article - алиас статьи в категории. Первый вариант урла уже есть в индексе, как настроить внутренний редирект для nginx по этому разделу, чтобы не потерять позиции и вес старых ссылок?
Для перенаправления добавить отдельный блок location ~ ^/\d+/\d+$ в котором будет куча строк с rewrite ^/1/11$ /category/article
Флаг permanent - постоянное перенаправление с кодом 301.
Флаг last завершает обработку текущего набора директив модуля ngx_http_rewrite_module, после чего ищется новый location, соответствующий изменённому URI.
Если поменять permanent на last, то перенаправление будет внутренним и страница будет доступна по /1/11 и /category/article.
Тут проблема в совместной работе mod_alias и mod_rewrite.
К тому времени как mod_alias будет выполнять редирект на https://....ru mod_rewrite уже выполнит RewriteRule и допишет лишние параметры "?_route_=produkcija".
Нужно поменять Redirect 301 /produkcija на RewriteRule ^produkcija$ и перести вверх все редиректы.
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
#Редирект с www to non-www(https)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
раньше в разделе сайта было формирование урлов по принципу site.ru/1/11. 1-id категории, 11- id статьи. Сейчас site.ru/category/article , где category - алиас категории, article - алиас статьи в категории. Первый вариант урла уже есть в индексе, как настроить внутренний редирект для nginx по этому разделу, чтобы не потерять позиции и вес старых ссылок?
Для перенаправления добавить отдельный блок location ~ ^/\d+/\d+$ в котором будет куча строк с rewrite ^/1/11$ /category/article
Флаг permanent - постоянное перенаправление с кодом 301.
Флаг last завершает обработку текущего набора директив модуля ngx_http_rewrite_module, после чего ищется новый location, соответствующий изменённому URI.
Если поменять permanent на last, то перенаправление будет внутренним и страница будет доступна по /1/11 и /category/article.
Ставить в блоке server для www.site.com.
От двух до четрёх слов в строке.
^(?>[^\w\n]*\w+){2,4}[^\w\n]*$RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Redirect 301 /produkcija https://....ru
Тут проблема в совместной работе mod_alias и mod_rewrite.
К тому времени как mod_alias будет выполнять редирект на https://....ru mod_rewrite уже выполнит RewriteRule и допишет лишние параметры "?_route_=produkcija".
В итоге редирект будет на https://site.ru/?_route_=produkcija, а движок сайта редиректит обратно на страницу /produkcija.
Нужно поменять Redirect 301 /produkcija на RewriteRule ^produkcija$ и перести вверх все редиректы.
Видимо вход на сайт тоже идет через index.php
Там же видно что это POST запрос.
Нужно добавить проверку.
RewriteCond %{REQUEST_METHOD} !=POSTRewriteCond %{HTTP_HOST} ^site\.ru$ [NC] [OR]
Перечисление флагов должно идти через запятую.
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC,OR]Не подскажите, как сделать постоянный редирект при условии что:
Старый адрес - http://www.site.ru/old.html
Новый -https://site.ru/new
Т.е. добавился протокол и страница переехала на новый алиас