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

时间:2018-04-02 04:05:38

标签: .htaccess http ssl redirect https

我最终在我的网站www.giftdays.jp上安装了SSL。它完美无瑕。 它显示绿色挂锁“安全”,就像我希望的那样。 但问题是它只在主页上显示。每当我访问产品页面等所有页面时,绿色挂锁都消失了,只是在圆圈内显示感叹号。 (它没有显示未通过交叉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提供。“
< / p>

虽然我的网站是在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中的templates文件夹中找到了一些http。但是我猜他们就像100多个人一样。我应该一个接一个地进入内部并将所有内容更改为https,还是我可以做任何事情来改变所有内容? 谢谢

1 个答案:

答案 0 :(得分:0)

设置Apache以向https发送http请求时,您无法使用重写引擎。您必须使用Redirect指令。

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