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

dma84
На сайте с 21.04.2009
Offline
168
#501

RewriteCond %{HTTP_HOST} !^newsite\.com$

RewriteRule ^(.*)$ https://newsite.com/$1 [R=301,L]

G8
На сайте с 13.03.2006
Offline
100
#502

Здравствуйте!

Прошу помощи в настройке постоянного 301 редиректа для Nginx

Поменялась структура сайта и сайт переехал на https

Старый адрес:

http://www.site.ru/old-name.html

Новый:

https://www.site.ru/new-name

Переадресация с http на https


if ($scheme = 'http') {
return 301 https://$host$request_uri;
}
J
На сайте с 20.02.2014
Offline
120
jkm
#503

Удобнее вынести редиректы в отдельный блок server.

server {

listen 80;
server_name site.ru;

rewrite ^/old-name\.html$ https://$host/new-name permanent;
rewrite ^/old-name2\.html$ https://$host/new-name2 permanent;
}

# Далее свой блок для HTTPS
server {
listen 443 ssl;
...
G8
На сайте с 13.03.2006
Offline
100
#504
jkm:
Удобнее вынести редиректы в отдельный блок server.
server {

listen 80;
server_name site.ru;

rewrite ^/old-name\.html$ https://$host/new-name permanent;
rewrite ^/old-name2\.html$ https://$host/new-name2 permanent;
}

# Далее свой блок для HTTPS
server {
listen 443 ssl;
...

Не подскажите, как сделать постоянный редирект при условии что:

Старый адрес - http://www.site.ru/old.html

Новый -https://site.ru/new

Т.е. добавился протокол и страница переехала на новый алиас

J
На сайте с 20.02.2014
Offline
120
jkm
#505
gradov81:
Не подскажите, как сделать постоянный редирект при условии что:
Старый адрес - http://www.site.ru/old.html
Новый -https://site.ru/new

Т.е. добавился протокол и страница переехала на новый алиас


server {
listen 80;
server_name www.site.ru;
rewrite ^/old\.html$ https://site.ru/new permanent;
}
OI
На сайте с 05.03.2011
Offline
109
#506

Друзья помогите. Может кто понимает в htaccess. В общем повелся на бесплатный ssl и решил перевести сайт на htpps. Сайт на CMS osclass. В результате получил большой геммор.

Не получается зарадиректить:

с https://site.pro/index.php на https://site.pro

с http://site.pro/index.php на https://site.pro

Hо при таком раскладе не пускает в админку

Мой httaccess:


RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]
RewriteRule ^(.*?)index\.php(/(.*?))?$ /$1$2 [L,R=301,NC,NE]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
</IfModule>

RewriteCond %{REQUEST_URI} !^oc-admin(/)(.*)

Если закоментить RewriteRule ^(.*?)index\.php(/(.*?))?$ /$1$2 [L,R=301,NC,NE]

то все работает, но появляются дубли.

https://site.pro/index.php/

Вход в админку и регистрация тоже по урлу работают /oc-admin/?page=login

Помогите решить трабл.

С меня на компот:)

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

А не пробовали это правило

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
ставить до всех остальных правил?
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
OI
На сайте с 05.03.2011
Offline
109
#508

Пробовал. Дело в том, что когда я нажимаю на кнопку вход, редиректит на главную.

Вот видно первая строка отправляет запрос, а вторая редиректит.

Видимо вход на сайт тоже идет через index.php

Хотя ссылка другая /user/login

S
На сайте с 30.09.2016
Offline
469
#509
ORIGAMMI:
Видимо вход на сайт тоже идет через index.php

Естественно. Там единая точка входа, что и следует из хтакцесса. Поэтому и надо редиректить на хттпс до всех остальных правил. И в админку не надо ходить по редиректу, надо сразу идти на хттпс.

J
На сайте с 20.02.2014
Offline
120
jkm
#510
ORIGAMMI:
Видимо вход на сайт тоже идет через index.php

Там же видно что это POST запрос.

Нужно добавить проверку.

RewriteCond %{REQUEST_METHOD} !=POST


RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{THE_REQUEST} /index\.php(/(.*?))? [NC]
RewriteRule ^(.*?)index\.php(/(.*?))?$ /$1$3 [L,R=301,NC,NE]

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

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