HTTP到HTTPS重定向同时添加了两个URL

时间:2018-09-03 04:11:52

标签: php .htaccess redirect https

我正在一个主要是自定义的网站上工作,并且HTTP没有正确重定向到HTTPS。

该网站可以很好地加载,但是HTTP版本无法正确重定向,因此显示为重复内容。

我以几种不同的方式看待它,我正在画一个空白。

将对index.php的HTTP请求重写为简单的域名

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^index\.php$ https://www.*****.com [R=301,L]

301重定向-如果缺少网页,则重定向到index.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule . index.php [L]

修复了规范化问题-如果HTTP请求中缺少www,请添加

RewriteCond %{http_host} ^insynergystl.com [nc]
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ https://www.insynergystl.com/$1 [r=301,nc] 

始终使用https进行安全连接

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.insynergystl.com/$1 [R=301,L]

1 个答案:

答案 0 :(得分:0)

尝试将https重定向放置到.htaccess中重定向列表的顶部,或者放置到虚拟主机配置本身。

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

如果您将日志级别设置得更高,则可以调试重定向,只是不要忘记在要测试的部分之后立即将其关闭:

LogLevel alert rewrite:trace8
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
LogLevel alert rewrite:trace3

http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging

在测试时,请确保仅发出临时重定向,否则浏览器也会缓存重定向,即使代码不再会让您重定向。