Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Редирект без цепочки / 10 сообщений из 10, страница 1 из 1
08.05.2019, 10:59
    #39811162
Атаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Здравствуйте.

Подскажите, пожалуйста, как решить задачу.
Старый сайт заменен на новый. Домен остался прежним. Есть несколько страниц старого сайта, которые должны редиректится на главную страницу нового.

Код: html
1.
http://www.domain.ru/page.htm -> https://www.domain.ru


301 редирект осуществляется с помощью php через модуль к CMS.

Проблема в том, что старый сайт работал на http, а новый уже https. Плюс, помимо редиректа с http на https, в .htaccess есть еще и редирект с "без www" на "с www".

Код: powershell
1.
2.
3.
4.
5.
6.
7.
# -> www
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ https:\/\/www\.%{HTTP_HOST}\/$1 [R=301,QSA,L]

#HTTP - > HTTPS
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]



... и 301 редирект фактически происходит так:
http://www.domain.ru/page.htm -> https://www.domain.ru/page.htm -> https://www.domain.ru

Подскажите, пожалуйста, как убрать лишнее звено.
Спасибо.
...
Рейтинг: 0 / 0
08.05.2019, 13:10
    #39811246
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Атаська,

ну так убери флаг L, чтобы он проваливался к следующему правилу...
...
Рейтинг: 0 / 0
08.05.2019, 13:54
    #39811285
Атаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Руслан ДамировичАтаська,

ну так убери флаг L, чтобы он проваливался к следующему правилу...

Да, но тогда в принципе не будет работать редирект http - > https.
И http://domain.ru будет сервер будет отдавать 404
...
Рейтинг: 0 / 0
08.05.2019, 13:56
    #39811288
Атаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
... и цепочка
Код: html
1.
http://www.domain.ru/page.htm -> https://www.domain.ru/page.htm -> https://www.domain.ru


превращается в
Код: html
1.
http://www.domain.ru/page.htm -> http://www.domain.ru


а нужно
Код: html
1.
http://www.domain.ru/page.htm -> https://www.domain.ru
...
Рейтинг: 0 / 0
08.05.2019, 14:29
    #39811328
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Атаська,

я в приведенных правилах не вижу
http://www.domain.ru/page.htm -> http://www.domain.ru/page.htm

давай уже полный файл, а не выкладывай куски, которые, как ты думаешь, не работают.
...
Рейтинг: 0 / 0
08.05.2019, 14:48
    #39811341
Атаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Руслан Дамирович,
это весь файл .htaccess:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
RewriteEngine On
RewriteBase /

# -> www
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ https:\/\/www\.%{HTTP_HOST}\/$1 [R=301,QSA,L]

#HTTP - > HTTPS
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]



Суть в том, что 301 редирект со старых страниц сайта на новые у меня на php. А редирект с http на https - в .htaccess.
В итоге, как я думаю, сначала выполняется общая директива для редиректа с http на https из .htaccess, а потом уже мой конкретный редирект с конкретной старницы, который задан через php.

Отсюда среднее лишнее звено в этой цепочке:
Код: powershell
1.
http://www.domain.ru/page.htm -> https://www.domain.ru/page.htm -> https://www.domain.ru
...
Рейтинг: 0 / 0
08.05.2019, 14:58
    #39811358
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Атаська...
Суть в том, что 301 редирект со старых страниц сайта на новые у меня на php.
...
Отсюда среднее лишнее звено в этой цепочке.
А в чем проблема?
Не знаешь как убрать? Или беспокоит слишком много редиректов?

Перенеси все логику из CMS в HTACCESS; или наоборот - перенеси редиректы без www / https в CMS, но оставь HRU

------------------------------------
- Доктор, у меня что-то болит.
- Вот вам какие-то таблетки.
...
Рейтинг: 0 / 0
08.05.2019, 15:08
    #39811366
Атаська
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Руслан Дамирович,
на данный момент не знаю, как переписать на php логику редиректа http -> https
...
Рейтинг: 0 / 0
08.05.2019, 17:19
    #39811468
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Атаська,

https://www.php.net/manual/ru/reserved.variables.server.php
если не знаете, где именно в CMS, то где-нибудь в самом начале файла, который обрабатывает запросы.
за точность не ручаюсь, проверить не на чем
Код: php
1.
2.
3.
4.
5.
if ( !( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] === 'on' ) ) {
  header( "HTTP/1.1 301 Moved Permanently" );
  header( "Location: " . "https://" . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI] );
  exit();
}
...
Рейтинг: 0 / 0
08.05.2019, 17:20
    #39811469
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Редирект без цепочки
Руслан Дамирович,

Код: php
1.
header( "Location: " . "https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Редирект без цепочки / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]