.htaccess 仅将某些页面从http重定向到https

.htaccess 仅将某些页面从http重定向到https,.htaccess,.htaccess,我发现了很多这样的问题,几乎都试过了,但都失败了。我最新的代码是: RewriteCond %{HTTPS} !^on$ RewriteCond %{REQUEST_URI} (/page_1|/page_2|/page_3|/page_3)$ RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 我只想将这些页面的http重定向到https(第1页-第4页) 起初,这似乎是可行的,但一旦我使用https进入页面1并单击任何其他(比如说

我发现了很多这样的问题,几乎都试过了,但都失败了。我最新的代码是:

RewriteCond %{HTTPS} !^on$
RewriteCond %{REQUEST_URI} (/page_1|/page_2|/page_3|/page_3)$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
我只想将这些页面的http重定向到https(第1页-第4页)

起初,这似乎是可行的,但一旦我使用https进入页面1并单击任何其他(比如说页面我的http\u http\u 1)链接,该链接不应该是https,它也会重定向到该页面的https(页面我的http\u 1

我还尝试:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (auth|register|secure)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(auth|register|secure)
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301]  
或者,如果在用户的浏览器上未激活SSL证书,是否有任何方法向用户显示自定义消息


实际上,当浏览器显示“查看默认值”警告消息时,许多非技术用户都会感到震惊。

我只是稍微更改了您的示例,但基本上它可以正常工作

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(?:auth|register|secure)$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(?:auth|register|secure)$
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R]
我添加了
^
$
/
,因为如果不是这样,像
nosecure
authority
这样的请求也会重新发送到HTTPS


切勿在启用
301
的情况下进行测试,有关详细信息,请参阅此答案。

不是用户没有激活SSL,而是您的服务器必须保留有效的证书。我猜您在HTTPS页面上混合了HTTPS和HTTP请求;这将向用户显示一条警告消息,因为HTTP请求未加密。我认为可以使用HTTP_REFERER字段将HTTP请求重定向到HTTPS。理想情况下,我认为最好是应用程序中的路径在选择哪个协议方面更加灵活use@PHPFerrari:记住,如果某件事不起作用,你需要解释你想发生什么,以及实际发生了什么。如果你只是使用“不起作用”这个短语,那么你就没有提供任何有用的信息来回应,这迫使你的对话者提问(如这里所示)。