Показать полную графическую версию : .htaccess и редирект с http на ту же страницу с https. Но у уже есть один RewriteRule
Svetik2000
01-07-2023, 10:07
Добрый день
Встала задача сделать редирект с http страницы на такую же страницу с https
Проблема в том, что у меня уже есть один RewriteRule в .htaccess
и не понимаю как сделать что бы они оба отрабатывали
вот код
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301]
RewriteRule ^/?([^/]+)/([^/]+)/(\d+)$ /index.php?param=$3 [L]
Выдает ошибку ERR_TOO_MANY_REDIRECTS
%{HTTP:X-HTTPS} !1 »
%{HTTPS (https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#rewritecond:~:text=the%20mod_remoteip%20module).-,HTTPS,on%22%20if%20the%20connection%20is%20using%20SSL/TLS%2C%20or%20%22off%22%20otherwise.,-(This%20variable%20can)} "off"
Svetik2000
01-07-2023, 11:22
%{HTTPS} "off" »
добавить после той строчки или заменить ее?
На самом деле зависит от конфигурации. Если apache получает проксируемые запросы без шифрования (от nginx например), то эти редиректы должны быть настроены в конфиге nginx. Либо если действительно должен передаваться X-HTTPS от nginx, то надо проверять его наличие в http-заголовках у apache.
Svetik2000
01-07-2023, 14:32
nginx не стоит
заменила строчку на вашу.
при обращение по http редиректа не произошло
по https выдало 404 ошибку
Svetik2000
06-07-2023, 20:31
Ну или с помощью php кода как можно это сделать?
что бы со страницы http:/site.ru/bla-bla-bla/be-be-be/pageNNN.php
был редирект на https:/site.ru/bla-bla-bla/be-be-be/pageNNN.php
Сделайте что-ли для какого-нибудь file.php с содержимым var_dump($_GET); правило RewriteRule file.php file.php?https=%{HTTPS}&x=%{HTTP:X-HTTPS} [END]
Запускайте этот файл с https и без. Выводы в студию. То есть содержимое этих переменных при запросе.
Svetik2000
07-07-2023, 11:32
Добрый день.
с http
array(2) { ["https"]=> string(3) "off" ["x"]=> string(0) "" }
с https
array(2) { ["https"]=> string(2) "on" ["x"]=> string(0) "" }
содержимое .htaccess выглядит сейчас так:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^/?([^/]+)/([^/]+)/(\d+)$ /index.php?param=$3 [L]
RewriteRule tmp.php tmp.php?https=%{HTTPS}&x=%{HTTP:X-HTTPS} [END]
при запросе с http редиректа на https не произошло
на выбор RewriteCond %{HTTPS} =off
RewriteCond %{THE_REQUEST} "\s/(\S*)\s"
RewriteRule ^ https://%{HTTP_HOST}/%1 [R,L]
или
RewriteCond %{HTTPS} =off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTP:X-HTTPS} !1 »
это лишняя строка
редирект лучше размещать выше всех отдельных RewriteRule-ов, иначе исходный REQUEST_URI может измениться.
Svetik2000
08-07-2023, 08:07
Спасибо
Вроде бы помогло.
Буду мониторить
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.