将某些页面从http重定向到https;将网站的其余部分重定向到www

时间:2016-01-15 00:12:52

标签: apache .htaccess mod-rewrite redirect

我的要求如下:

  • 我网站的某些页面需要使用https
  • 其余的可以使用http
  • 我还需要重定向一切以使用www。前缀(例如,如果有人访问domain.com,则重定向到www.domain.com)

我已尝试过Stack Overflow上列出的一些解决方案,但似乎都没有。

这是我的htaccess文件的相关部分:

#force https for certain pages    
RewriteCond %{HTTPS} !=on
RewriteRule ^(login2\-test\.php.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

#redirect all pages to www
RewriteCond %{HTTPS} !=off
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

将所有页面重定向到www都可以正常工作。但是,login2-test?switch = ftr(在reg /子目录中)到https的重定向导致不匹配,因此使用http显示页面。

我已按如下方式重写该行:

RewriteRule ^(reg\/)(login2\-test\.php.*)$ https:www.domain.com/$1$2 [L,R]

这至少匹配/重定向到https,但是浏览器无法解析它。

我已经交换了规则的顺序(例如,首先是www重定向);那没有用。

我会感激任何帮助 - 我现在已经在这方面苦苦挣扎了一段时间。

1 个答案:

答案 0 :(得分:0)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]