![]() |
редирект в .htaccess с https на http с параметрами
Добрый день.
Подскажите как реализовать... есть урл вида https://my_site.ru/1/2/3 нужно сделать редирект на http://my_site.ru/1/2/3 вариант вида Код:
RewriteCond %{SERVER_PORT} ^443$ [OR] делает переадресацию на урл http://my_site.ru/index.php?param=3 подскажите как можно реализовать? либо через .htaccess либо через php |
Попробуйте Reverse Proxy, например
|
Цитата:
и доступа к настройкам Апача нет |
Код:
RewriteEngine On |
В том то и дело, что сертификат невалидный, поэтому и возникла необходимость вернуть опять на http
В вашем варианте идет редирект на http://my_site.ru/index.php?param=3 |
1. проверка сертификата идёт до разбора http запроса, поэтому браузер будет ругаться.
2. если REQUEST_URI имеем после других преобразований, то нужно смотреть сырой запрос. 303 не кэширует. Код:
RewriteCond %{HTTPS} on |
Цитата:
|
301 редирект кэшируется. Смотрите Location в реальном ответе сервера. Может срабатывать какое-то предыдущее правило в конфиге.
|
конфиг выглядит так
Код:
ErrorDocument 404 /index.php |
ну вместо 1/2/3 регулярку свою вставить надо (если мой вариант).
RewriteCond %{THE_REQUEST} \s(/[^/]+/[^/]+/\d+\S*) |
Сделала
Код:
RewriteCond %{HTTPS} on |
после RewriteEngine On? Проверено всё, изучайте все свои конфиги.
|
Цитата:
Код:
ErrorDocument 404 /index.php |
Правила должны быть более конкретные, иначе будут нежелательные редиректы. Правило /*/*/111 слишком общее. Внешние редиректы лучше ставить раньше внутренних, до изменений путей и переменных. Чуток подправлено.
Код:
RewriteCond %{HTTPS} on |
сделала как в вашем примере. все равно редирект с https на http не работает
|
Какая конфигурация серверов? Если апач за nginx'ом каким-нибудь, то по %{HTTPS} не узнать наверное про наличие https.
|
как это посмотреть на виртуальном хостинге?
|
посмотрите вывод phpinfo() из-под https, есть ли там HTTPS или какой-нибудь HTTP_X_FORWARDED_PROTO
|
Вложений: 1
это имеете ввиду?
|
Тогда что-то другое. Какая версия Apache? В старых версиях нет многих символов регулярных выражений. Может нет \d (означает любую цифру), тогда попробуйте ваш бывший вариант [0-9]. Насчёт пробельного символа \s не уверен, но можно попробовать заменить на простой пробел со слешем "\ ". \S (большой S) это наоборот любой непробельный символ.
|
Apache/2.4.6 (CloudLinux) OpenSSL/1.0.2k-fips mod_fcgid/2.3.9 PHP/5.4.16
|
в powershell выполните например
Код:
(Invoke-WebRequest -Uri https://my_site.ru/1/2/3 -SkipCertificateCheck -SkipHttpErrorCheck).RawContent |
не удается найти параметр, соответствующий имени параметра "SkipCertificateCheck"
|
ну или
Код:
curl -Lvk "https://my_site.ru/1/2/3" |
и что должна увидеть?
Код:
* Connected to ***** port 443 (#0) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Время: 13:58. |
Время: 13:58.
© OSzone.net 2001-