.htaccess - 在网站的每个页面上将 HTTP 重定向到 HTTPS

标签 .htaccess http ssl redirect https

我终于在我的网站 www.giftdays.jp 上安装了 SSL。它完美无缺。 它像我希望的那样显示绿色挂锁“安全”。 但问题是它只显示在主页上。每当我访问其他页面(如产品页面和所有页面)时,绿色挂锁都消失了,只在圆圈内显示感叹号。 (它不显示 NOT SECURED WITH CROSSED HTTPS)。 从 chrome 打开检查后,我收到 MIXED CONTENT 错误。 这是确切的错误。

“混合内容:位于“https://www.giftdays.jp/products/list.php?mode=search&sps=5”的页面已通过 HTTPS 加载,但请求了不安全的图像“http://www.giftdays.jp/special/list_header/happywedding/images/happywedding.png”。此内容也应通过 HTTPS 提供。”

虽然我的网站是通过 HTTPS 加载的,但为什么它没有显示绿色挂锁? 通过谷歌搜索,我最终发现有人发布了一些 htaccess 帖子,我将其添加到我的 htaccess 并上传到服务器。我添加的代码是:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

但网站其他页面没有变化。
这是我的 htaccess 文件中的内容:

# 基本は SC_Initial.php で設定するが、ini_setで反映されないものはここで設定する

php_value mbstring.language Japanese
php_flag mbstring.encoding_translation off
php_value output_handler none
php_flag magic_quotes_gpc off
php_flag session.auto_start 0

# INI_ALL なのにもかかわらず, ini_set で指定しても反映されない環境がある...
php_value mbstring.internal_encoding UTF-8

# デフォルトテンプレートの状態で 2M 近くになるため
php_value upload_max_filesize 5M
#php_value post_max_size 8M
php_flag register_globals off

RewriteEngine on

Options -Indexes

###################
# メンテナンス中
###################
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/503.php
RewriteCond %{REQUEST_URI} !^/maintenance.html
RewriteCond %{REQUEST_URI} !^/Gds1q2w3eAdmin/
RewriteCond %{REQUEST_URI} !^/user_data/
RewriteCond %{REMOTE_ADDR} !=114.179.83.200
RewriteCond %{REMOTE_ADDR} !=54.250.233.6
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} >201403311500
RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR}%{TIME_MIN} <201406011000
RewriteRule ^.*$ /503.php [L]

###################
# 通常使用
###################
RewriteRule ^guide/(.*)$ user_data/guide/$1
RewriteRule ^products/shop_map.php user_data/products/shop_map.php
RewriteRule ^concierge/.* user_data/concierge/$1
RewriteRule ^original/(.*)$ user_data/original_catalog/$1
RewriteRule ^gift/(.*)$ user_data/gift/$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#商品ページのURL書き換え
RewriteRule ^gifts/([0-9]+)/$ products/detail.php?product_id=$1 [QSA,L]
RewriteRule ^gifts/([0-9]+)/shop_map.php user_data/products/shop_map.php

#カタログページのURL書き換え
RewriteRule ^catalog/price-([0-9]+)/$ user_data/catalog/list.php?catalog_type_id=1&catalog_id=$1 [QSA,L]
RewriteRule ^catalog/theme-([0-9]+)/$ user_data/catalog/list.php?catalog_type_id=2&catalog_id=$1 [QSA,L]
RewriteRule ^catalog/(.*)$ user_data/catalog/$1

#有効性テスト用
# Redirect /api/ http://www.google.com

#Pマーク指摘対応
RewriteCond %{REQUEST_URI} .*/contact/.*$ [OR]
RewriteCond %{REQUEST_URI} .*/entry/.*$ [OR]
RewriteCond %{REQUEST_URI} .*/gift/.*$ [OR]
RewriteCond %{REQUEST_URI} .*/mypage/.*$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{HTTP_HOST} ^(www\.)?giftdays.jp$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

RewriteEngine On
  RewriteCond %{HTTPS} !on
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

# 404ページ
ErrorDocument 404 /user_data/404.php

经过更多调查,我在 ftp 中的模板文件夹中发现了一些 http。但我猜它们就像 100 多个一样。我应该一个一个地进入并全部更改为 https 还是我可以做些什么来一次更改所有内容? 谢谢

最佳答案

当设置 Apache 将 http 请求发送到 https 时,您不能使用重写引擎。您必须使用重定向指令。

可能您已经为 http 和 https 设置了两个 VirtualHost block 。任何到达 http VirtualHost 的请求都应该重定向到 https URL。

关于.htaccess - 在网站的每个页面上将 HTTP 重定向到 HTTPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49605172/

相关文章:

.htaccess - 我需要在主域而不是子域上强制使用 ssl

php - CORS 预检 channel 未成功 - 客户端 - 服务器

java - REST 请求响应和内部服务器错误

c# - 这是 CERTIFICATE_VERIFY_FAILED 异常的正确解决方案吗?

python - 属性错误 : 'module' object has no attribute 'PROTOCOL_TLSv1_2' with Python 2. 7.11

html - 无法使用 301 和 .htaccess 重定向

apache - 如何将错误 403 重定向到 .htaccess 中的 root

node.js - Nginx 在 80 端口设置 nodejs

java - HTTP 响应缓存

apache - 我必须在创建 CSR 请求之前删除自签名 SSL 证书吗?