質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

WordPressをSSL化した後、httpとhttpsが混在して困っています

ty-komame
ty-komame

総合スコア12

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

5回答

2リアクション

1クリップ

12460閲覧

投稿2016/03/03 16:13

編集2016/03/03 19:44

状況と経緯

運営中のWordPressサイト全体をSSL化したところ、テーマ内で使用しているURLを出力する類の関数が種類によって「http://~~」「https://~~」という異なる出力結果になってしまい困っています。

SSL化前の状況とSSLに際して行った手順は以下になります。

【SSL化前の状況】
・WordPress + WelcartによるECサイト
・WordPress本体は /wp/ に設置。公開はドメイン直下。
・オリジナル開発テーマ、SSLを導入する前は問題は無い状態
・WordPress本体バージョンは最新、サーバーのPHPは5.6系、mySQLは5.5。

【SSL化】
・XserverにてIPアドレスベースの独自ドメインを申し込み → サーバー側の対応完了
・WordPress管理画面 > 一般設定 にてWordPressアドレス/サイトアドレスを「https://~」に変更
・Welcart > システム設定にて SSLを使用する/WordPressのアドレス/ブログのアドレス を変更

このようにしてSSL化した結果、サイトの現状は以下のようになっています。

<?php the_permalink(); ?>で出力されるURLが「http://~」(SSL化されていないこと以外は正常)
<?php echo home_url(); ?>で出力されるURLが「http://~」(SSL化されていないこと以外は正常)
・試しに<?php home_url(); ?>にしたところ、多くの場合はSSL化された正しいURLが出力される
・上記の補足として、aタグ内href要素に<?php home_url(); ?>のみが存在する場合は、現在表示中のページURLが出力される(最後に別途説明を追加します)
<?php echo get_stylesheet_directory_uri(); ?>など、他にテーマ内で使用されているURLを出力する関数は全て正常

このような状況のため、正しい表記ではないと思いますが<?php echo home_url(); ?><?php home_url(); ?>に差し替えるか、一部は直接URLを入力して対応しています。
サイトトップや固定ページへのリンクは上記の方法で対応できたのですが、個別投稿へのリンクには<?php the_permalink(); ?>を使うしか方法を知らずに困っています。

質問

<?php echo home_url(); ?>および<?php the_permalink(); ?>がSSL化されたURLを出力してくれない原因と対処方法をご存知の方がいらっしゃいましたら、お力を貸していただけないでしょうか?

すでに公開中のサイトですので、根本原因の排除よりも、現在起きているエラーへの処置を優先したいと思っています。
そのため、例えばfunctions.phpに記述することでhome_url()the_permalink()が出力する値を強制的にhttpsにしてしまう、などの対処方法がありましたら、是非ご教授ください。
よろしくお願いいたします。

補足

<?php home_url(); ?>という記述をした時の挙動は以下のようになります。

<a href="<?php home_url(); ?>/blog/">https://example.com/blog/
<a href="<?php home_url(); ?>/2016/03/03/post1/">https://example.com/2016/03/03/post1/

<a href="<?php home_url(); ?>"> → 現在表示中ページのURL(httpの箇所も現在表示中のURLに依る)

追記:chitokuさんにご指摘頂いた通り、上記の説明は私は勘違いでした。

補足2

頂いたご回答にて$_SERVERが必要とのことですが、以下のような情報でよろしいでしょうか?
(私自身で所有しているサイトではないのでドメインなどは伏せ字(xxxxx)にしています。)

PHP_SELF /index.php argv - argc - GATEWAY_INTERFACE CGI/1.1 SERVER_ADDR xxxxxxx SERVER_NAME xxxxxxx SERVER_SOFTWARE Apache SERVER_PROTOCOL HTTP/1.1 REQUEST_METHOD GET REQUEST_TIME 1457028756 REQUEST_TIME_FLOAT 1457028756.7541 QUERY_STRING DOCUMENT_ROOT /home/xxxx/xxxx/public_html HTTP_ACCEPT text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 HTTP_ACCEPT_CHARSET - HTTP_ACCEPT_ENCODING gzip, deflate, sdch HTTP_ACCEPT_LANGUAGE ja,en-US;q=0.8,en;q=0.6 HTTP_CONNECTION close HTTP_HOST xxxxxxx HTTP_REFERER - HTTP_USER_AGENT Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36 HTTPS on REMOTE_ADDR xxxxxxx REMOTE_HOST - REMOTE_PORT 25587 REMOTE_USER - REDIRECT_REMOTE_USER - SCRIPT_FILENAME /home/xxxxx/xxxxx/public_html/index.php SERVER_ADMIN xxxxxxx SERVER_PORT 443 SERVER_SIGNATURE PATH_TRANSLATED - SCRIPT_NAME /index.php REQUEST_URI /hoge/ PHP_AUTH_DIGEST - PHP_AUTH_USER - PHP_AUTH_PW - AUTH_TYPE - PATH_INFO - ORIG_PATH_INFO -
dsk, watermusic👍を押しています

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。