2013-10-10 1 views
2

Я знаю, что это общая тема, но я сделал все возможное, чтобы разрешить ее с помощью решений, которые я нашел в Интернете.Mod_rewrite: принудительно использовать SSL на определенных страницах. Добавить www на незащищенных страницах

У нас есть сертификат, связанный с субдоменом secure.mysite.com, и мы хотим добиться:

  1. Мы должны заставить SSL на следующих путях и их подстраницах:
    HTTP: //mysite.com/services [/ .../...] => https://secure.mysite.com/services [/ .../...]
    http://mysite.com/ login [/ .../...] => https://secure.mysite.com/login [/ .../...]
    http://mysite.com/member [/ ...]/...] => https://secure.mysite.com/member [/ .../...]
    http: // mysi te.com/admin [/ .../...] =>https://secure.mysite.com/admin

  2. Мы хотим, чтобы добавить WWW на всех непереключаемых безопасных путей (все пути, кроме упомянутых выше)

  3. Мы хотим удалить WWW на всех безопасных путей (все те, упомянутые выше)

следующая является то, что я поставил в моей .htaccess-файл, без успеха:

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(services|login|member|admin)$ https://secure.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(services|login|member|admin)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

# remove www from host when HTTPS 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteCond %{HTTPS} =on 
RewriteRule^http%2://%1%{REQUEST_URI} [L,R=301] 

# add www from host when HTTP 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteCond %{HTTPS} =off 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

# Zend redirect logic 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

ответ

2

с некоторыми исправления:

RewriteEngine On 

# force HTTPS 
RewriteCond %{HTTPS} =off 
RewriteRule ^(services|login|member|admin) https://secure.mysite.com%{REQUEST_URI} [L,R=301] 

# force HTTP 
RewriteCond %{HTTPS} =on 
RewriteRule !^(services|login|member|admin) http://mysite.com%{REQUEST_URI} [L,R=301] 

# remove www from host when HTTPS 
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule^https://%1%{REQUEST_URI} [L,R=301] 

# add www from host when HTTP 
RewriteCond %{HTTPS} =off 
RewriteCond %{HTTP_HOST} !^(www|secure)\. [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Спасибо за ваш ответ! Но результат получается следующим образом: https://secure.www.mysite.com/login. –

+0

Но 'https: // secure.www.mysite.com/login' является правильным? Поскольку он использует HTTPS – anubhava

+0

Прокляните этот кеш! Оказывается, изменения ничего не делают с SSL, он только заставляет www: http://www.mysite.com/login –

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