切换到HTTPS后,重定向为302而不是301

时间:2017-09-01 作者:Marc

上周,我将我的网站从HTTP改为HTTPS。

尽管中有301重定向规则.htaccess, 出于某种原因,所有旧(HTTP)页面都会使用302重定向进行重定向。我找不到这是什么,也没有更改任何插件。我唯一创建的是.htaccess. 网站url=https://www.janjippe.nl/

以下是我的.htaccess 文件:

#BEGIN Wordpress
<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteBase /

RewriteRule ^index\\.php$ – [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] </IfModule> 
# END WordPress
然而,目前,在检查所有页面时,我只看到302个重定向。如何确保301重定向而不是302重定向到位?

这对private_html 文件夹

这个public_html 文件夹为空,1除外.htaccess 包含以下内容的文件:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.janjippe.nl/$1 [R,L]

<IfModule mod_headers.c>
  Header set Strict-Transport-Security "max-age=31536000"
</IfModule>

# BEGIN WpFastestCache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

AddDefaultCharset UTF-8

RewriteCond %{HTTP_HOST} ^janjippe.nl
RewriteRule ^(.*)$ http\\:\\/\\/www\\.janjippe\\.nl\\/$1 [R=301,L]

RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\\"]+ [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/all/$1/index.html -f [or]
RewriteCond /home/janjikm99/domains/janjippe.nl/public_html/wp-content/cache/all/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/all/$1/index.html" [L]
</IfModule>

<FilesMatch "\\.(html|htm)$">
  FileETag None

  <ifModule mod_headers.c>
  Header unset ETag
  Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
  Header set Pragma "no-cache"
  Header set Expires "Mon, 29 Oct 1923 20:30:00 GMT"
  </ifModule>
</FilesMatch>

# 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]
</IfModule>
# END WordPress

1 个回复
SO网友:MrWhite

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.janjippe.nl/$1 [R,L]
你的“旧”.htaccess 文件位于/public_html/.htaccess 可能会让嫌疑犯302重定向。如果没有明确的状态代码R 标志默认为302。

如果整个站点已移动到/private_html 文件夹作为SSL实现的一部分,那么HTTP(端口80)似乎是从/public_html 和HTTPS(端口443)从/private_html! (这有点奇怪,因为这样可以(意外地)为每个人提供不同的内容,这是个坏主意。)

如果是这种情况,那么你可能会改变旧的/public_html/.htaccess 要简单读取的文件:

Redirect 301 / https://www.example.com/
并可能删除/private_html/.htaccess 文件,因为此新站点(位于/private_html) 似乎只能通过HTTPS访问!然而,最好将此重定向保持在“以防万一”的位置,以防配置发生任何更改。

(注意:由于没有缓存临时302重定向,因此可以更容易地首先测试这些重定向。如果缓存了错误的重定向,则可能会混淆调试。)

结束

相关推荐

redirect_to ignoring the SSL

我有一个最近添加了SSL证书的站点。在我添加证书之前,一切都很顺利。有时,当我尝试登录时,登录页面会重新加载,并且不会显示错误消息。我意识到表单有一个名为redirect\\u to的隐藏字段,该值使用http://而不是https://。如果我手动更改,我可以成功登录,所以我想这就是问题所在。解决这个问题的正确方法是什么?我想我可以在页面加载时使用一些javascript来修改它,但也许有更好的方法