2016-02-02 3 views
0

У меня есть ситуация, когда мне нужно заставить каждую страницу на моем сайте перенаправлять на HTTP, за исключением двух конкретных URL-адресов, которые должны принудительно перенаправить на HTTPS.Использовать HTTP для всех страниц, кроме определенных URL-адресов

Две страницы, которые необходимо перенаправить на HTTPS страницы:

/Microsoft-MOC-по требованию-видео-обучения/MOC-регистрация страниц/

/курсы/регистр/

код я использую в моей .htaccess файл выглядит следующим образом:

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/courses/register/ 
RewriteCond %{REQUEST_URI} !^/microsoft-moc-on-demand-video-training/moc-registration-page/ 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteRule ^(/courses/register/|/microsoft-moc-on-demand-video-training/moc-registration-page/)/ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

К сожалению, это, похоже, не работает. Весь сайт перенаправляет на HTTP (так что часть кода работает), но эти два исключения (которые должны перенаправить на HTTPS) этого не делают, они остаются как HTTP-ссылки.

Любая идея, что я делаю неправильно здесь?

+0

Просто связанный с этим вопрос: почему вы не перенаправлять все к протоколу HTTPS? Если вы манипулируете персональными данными или информацией о кредитной карте, я настоятельно рекомендую вам использовать https на всем веб-сайте, чтобы избежать ошибок ... – Tom

ответ

2

Проблема в том, что для RewriteRule нет начального / в запрошенном пути. Поэтому вы пытаетесь сопоставить что-то, чего нет.

У вас также было дополнительное / в конце каждой опции в первой группе захвата, которая в сочетании с окончательным / потребует такой путь, как /courses/register//.

Следующий код должен соответствовать вашим потребностям:

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/courses/register/ 
RewriteCond %{REQUEST_URI} !^/microsoft-moc-on-demand-video-training/moc-registration-page/ 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteRule ^(courses/register|microsoft-moc-on-demand-video-training/moc-registration-page)/ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+1

Это сделало трюк! Спасибо! – DigitalSky

Смежные вопросы