HTAccess 301将http重定向到HTTPS不起作用

时间:2018-04-07 作者:japanworm

我今天从http更新到https。到目前为止,一切顺利。除了重定向命令外,一切正常。当我点击链接到我博客的外部社交媒体或网站时,仍然使用旧版本的http,它不会被重定向。

这是我的文件的一部分的外观:

# -FrontPage-
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName zoomingjapan.com
AuthUserFile /home/zoomingj/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/zoomingj/public_html/_vti_pvt/service.grp
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^zoomingjapan.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.zoomingjapan.com [NC]
RewriteRule ^(.*)$ https://zoomingjapan.com/$1 [L,R=301,NC]
</IfModule>

# END WordPress
我也尝试了这个,但没有积极的结果:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
这是一个http link. 您可以自己测试并看到它没有被重定向。

缓存插件会干扰吗?我正在使用LiteSpeed缓存。

2 个回复
最合适的回答,由SO网友:MrWhite 整理而成

您将重定向代码放错了位置。它需要在# BEGIN WordPress 部分通过将重定向代码放在WordPress前端控制器之后,它将永远不会被处理,除非请求是物理文件。

但是,您的第一次尝试是不正确的(它缺少对HTTPS的检查),因此将导致重定向循环(如果已执行)。

HTTP到HTTPS的标准格式如下:

RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
然而,理想情况下,您还应该将其与规范的www/非www重定向相结合,以避免重复内容或多次重定向。例如,如果首选项是www(并且您没有其他子域),则如下所示:

# Redirect bare domain to www and HTTPS
RewriteCond %{HTTP_HOST} !^www\\.
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
UPDATE: 如果您首选非www版本,则可以将第一条规则更改为如下内容:

# Redirect www to non-www (and HTTPS)
RewriteCond %{HTTP_HOST} ^www\\.
RewriteRule (.*) https://example.com/$1 [R=301,L]
(假设您还更改了WordPress中的必要设置。)

SO网友:Jasom Dotnet

Try this:

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>
# END WordPress
结束

相关推荐

忽略特定子域的HTAccess规则

我有一个。托管Wordpress网站并通过cPanel中的AutoSSL应用SSL证书的co.uk域名。我还有一个子域名。正在使用WHM中的DNS区域编辑器转发到另一台服务器的co.uk。在wordpress网站上,有一个指向子域的链接,该子域应显示托管在辅助服务器上的web应用程序,但不幸的是,它只是重新加载wordpress网站,我推测这与htaccess文件有关。是否有需要添加的规则使htaccess忽略子域,以便在单击链接时,用户正确地发送到子域,而不是刷新主页?谢谢