【问题标题】:.htaccess: force www on all pages, force https on one page, force http on all other pages.htaccess:在所有页面上强制 www,在一个页面上强制 https,在所有其他页面上强制 http
【发布时间】:2013-01-22 07:13:10
【问题描述】:

我有这个网站,example.com。我想做的是在所有页面上强制 www,在一个页面上强制 https,在所有其他页面上强制 http。

我正在使用以下 .htaccess 代码将所有 http 流量重定向到 www:

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

在我的“表单”页面上设置 SSL:

#Force SSL on a specific directory
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteCond %{REQUEST_URI} form
RewriteRule ^(.*)$ https://www.example.com/form/$1 [R,L]

问题是,当我点击 https://example.com/ 时,它不会像我想要的那样重定向到 www (https://www.example.com),尤其是 http 和 www (http://www.example.com)。我试过这个:

#Redirect SSL to www
RewriteCond %{ENV:HTTPS} on [NC]
RewriteRule ^(.*)$ http://www.example.com$1 [R=permanent,L]

但那是一个非常愚蠢的尝试并且没有奏效。我怎样才能同时完成这三个?

【问题讨论】:

    标签: .htaccess mod-rewrite https


    【解决方案1】:

    试试这个:

    # Handle nonSSL
    RewriteCond %{HTTPS} on 
    RewriteRule !^/?form(/|$) http://www.ravicti.com%{REQUEST_URI} [L,R=301]
    
    # Handle SSL 
    RewriteCond %{HTTPS} off 
    RewriteRule ^/?form(/|$) https://www.ravicti.com%{REQUEST_URI} [L,R=301]    
    
    # Add the missing www for both HTTP and HTTPS
    RewriteCond %{HTTP_HOST} ^ravicti.com$ [NC]
    RewriteCond %{HTTPS}:s (on:(s)|off:s)
    RewriteRule (.*) http%2://www.ravicti.com%{REQUEST_URI} [L,R=301]
    

    【讨论】:

      猜你喜欢
      • 2016-07-28
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2019-10-01
      • 2013-11-12
      相关资源
      最近更新 更多