.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:记住,如果某件事不起作用,你需要解释你想发生什么,以及实际发生了什么。如果你只是使用“不起作用”这个短语,那么你就没有提供任何有用的信息来回应,这迫使你的对话者提问(如这里所示)。