mod_rewrite - HTTP к HTTPS для некоторых страниц, сохраняя существующие правила переписывания - PullRequest
0 голосов
/ 28 августа 2018

У меня есть файл .htaccess с несколькими правилами, которые до сих пор хорошо работали. Теперь я реализовал SSL на веб-сайте, и мне нужно добавить правило для перенаправления только одной веб-страницы в HTTPS, оставив все остальное как было. К сожалению, но я не могу этого сделать.

Предварительный код SSL

RewriteEngine On
RewriteBase /

#Redirect http://example.com to http://www.example.com
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301]

#Rewrite http://www.example.com/123 to http://www.example.com/data.php?id=123   
RewriteRule ^([0-9]+)$  data.php?id=$1 [L,NC]

#Rewrite http://www.example.com/about to http://www.example.com/about.php
RewriteRule ^about$ about.php [L,NC]

#Rewrite http://www.example.com/ab123 to http://www.example.com/abdisp.php?id=123
RewriteRule ^ab([0-9]+)$  abdisp.php?id=$1 [L,NC]

Теперь мне нужно перенаправить на HTTPS только запросы на один конкретный скрипт. Предварительные правила SSL должны продолжать работать, как и до сих пор, поэтому все, что я делаю, это добавляю следующий код:

Новый HTTP для HTTPS

#If HTTPS is not set and the script being requested is rvservice.php, redirect to HTTPS
RewriteCond %{HTTPS} != on
RewriteCond %{REQUEST_URI} rvservice\.php
RewriteRule ^/rvservice\.php(.*) https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Это не работает. Когда я загружаю это дополнение к исходному коду на сервер, я получаю внутреннюю ошибку сервера. Я попытался поместить этот новый код в начале исходного файла .htaccess, но результат тот же. Я переписал его как одно правило перезаписи (без условий), но получаю ошибку цикла перенаправления. Я читал посты на SO о HTTP для HTTPS и применял их решения, но, кажется, в моем старом коде есть что-то, что не ладит с новыми строками. Я чувствую, что я близок к решению, но пока оно выглядит, я ближе к невежеству. Я буду признателен за любые указатели в правильном направлении. Спасибо!

1 Ответ

0 голосов
/ 28 августа 2018

В .htaccess, нет / в начале в тестовом параметре RewriteRule:

RewriteCond %{HTTPS} off
RewriteRule ^rvservice\.php(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Но если вы используете %{REQUEST_URI}, они всегда начинаются с /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...