ins*_*dnz 4 .htaccess ssl https redirect
有没有办法使用htaccess重定向条件和重定向来捕获通过HTTPS访问网站时通过HTTP调用的内容?
如果通过HTTPS访问网站,http内容将被重定向到https等效网址?
从本质上讲,当我的网站通过HTTPS访问时,我想要一种自动化的方式来清理和处理混合内容.
到目前为止,以下修复了通过HTTPS访问站点时通过HTTP调用的所有.css和.js文件.
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这不会重定向在我的站点上的图像请求(例如)在HTTPS会话期间通过HTTP调用.
我也试过这个规则,
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
Run Code Online (Sandbox Code Playgroud)
但这也没有重定向图像.
我认为必须有一种方法来测试连接是否通过HTTPS,然后将任何http:// urls重写为https://等效.我只是不确定如何正确地制定规则.
Bar*_*ard 10
这不行.
浏览器将看到http请求并将页面标记为包含不安全的内容.这是正确的,因为请求将通过http,然后重定向到https.因此,这是不安全的.
您要做的是使用Content-Security-Policy要求Web浏览器在加载页面时更新请求
Header always set Content-Security-Policy: upgrade-insecure-requests
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此处:https://www.w3.org/TR/upgrade-insecure-requests/
注意浏览器支持是这样的:http://caniuse.com/#search=upgrade%20insecure
如果您可以启用模式标头,那么您可以将此代码添加到 .htaccess 或主机配置文件中:
<ifModule mod_headers.c>
Header always set Content-Security-Policy "upgrade-insecure-requests;"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
您可以在 Ubunto 中使用以下命令启用模式标头:
a2enmod headers
apache2 -k graceful
Run Code Online (Sandbox Code Playgroud)
如果您无法编辑 .htaccess 或启用模式标头,那么您可以在 HTML 标头中添加以下行<head>...</head>:
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)
Jas*_*ler -1
这行不通:
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]
Run Code Online (Sandbox Code Playgroud)
只需将其放在您拥有的任何其他规则之前即可
条件也可以更改为
RewriteCond %{SERVER_PORT} !^443$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9543 次 |
| 最近记录: |