powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Редирект без цепочки
10 сообщений из 10, страница 1 из 1
Редирект без цепочки
    #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
Редирект без цепочки
    #39811246
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Атаська,

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

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

Да, но тогда в принципе не будет работать редирект http - > https.
И http://domain.ru будет сервер будет отдавать 404
...
Рейтинг: 0 / 0
Редирект без цепочки
    #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
Редирект без цепочки
    #39811328
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Атаська,

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

давай уже полный файл, а не выкладывай куски, которые, как ты думаешь, не работают.
...
Рейтинг: 0 / 0
Редирект без цепочки
    #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
Редирект без цепочки
    #39811358
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Атаська...
Суть в том, что 301 редирект со старых страниц сайта на новые у меня на php.
...
Отсюда среднее лишнее звено в этой цепочке.
А в чем проблема?
Не знаешь как убрать? Или беспокоит слишком много редиректов?

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

------------------------------------
- Доктор, у меня что-то болит.
- Вот вам какие-то таблетки.
...
Рейтинг: 0 / 0
Редирект без цепочки
    #39811366
Атаська
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руслан Дамирович,
на данный момент не знаю, как переписать на php логику редиректа http -> https
...
Рейтинг: 0 / 0
Редирект без цепочки
    #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
Редирект без цепочки
    #39811469
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан Дамирович,

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


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