Нужно ли мне изменять этот мод-переписывать код, если я добавляю SSL-сертификат на свой сервер?

#php #.htaccess #mod-rewrite #ssl

#php #.htaccess #мод-переписать #ssl

Вопрос:

Это продолжение вопроса, который я задавал в прошлом году о настройке перезаписи мода:http://bit.ly/h8PVd9

У меня на моем сервере есть следующий мод-перезаписать, который заставляет весь трафик использовать полный URL (ради этого вопроса я буду использовать www.mysite.com ). Он работает нормально, и проблем нет:

 RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev.mysite.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
  

Итак, все хорошо, однако мне нужно добавить SSL на сервер, покрывающий доменwww.mysite.com . Какое (если есть) изменение / исключение мне нужно добавить к моему ранее существующему коду перезаписи, чтобы гарантировать любые вызовы https: //www.mysite.com не будет перенаправлен на http://www.mysite.com? Нужно ли мне вообще что-либо пересматривать?

Ответ №1:

Я не эксперт по переписыванию, но я думаю, что ниже будет работать.

 RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www.mysite.com$ [NC]
RewriteCond %{HTTP_HOST} !^dev.mysite.com$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [L,R=301]
  

Комментарии:

1. Я не хочу никого никуда перенаправлять, на самом деле наоборот! Извините, если это было непонятно. Я хочу убедиться, что безопасные вызовы на https-страницы не перенаправляются на небезопасные http-страницы, учитывая синтаксис перезаписи выше.

2. Хорошо, я удалил свой второй пример. Таким образом, показанный будет перенаправлять только в том случае, если это http. Если это https, то он не проходит через условия. httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

Ответ №2:

После тестирования и консультаций с моим веб-хостингом ответ на этот вопрос следующий:

 RewriteCond %{HTTPS_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ https://mysite.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^mysite.com [NC]
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=301,L]
  

Первое правило адресует все https-запросы к серверу и разрешает их выполнение без перенаправления по моим исходным правилам. Второе — это переписывание моих оригинальных правил, и оно касается принудительного использования www.mysite.com независимо от того, что вводит пользователь.

@Paul — вы были довольно близки к этому, но с моими существующими перезаписями это решение решает обе проблемы.