0

我有这个网站,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]

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

4

1 回答 1

0

尝试这个:

# 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]
于 2013-02-06T22:58:12.417 回答