これは一般的な方法です。登録やログインなどの安全なページへのリンクに絶対 URL を使用するだけで、https プロトコルを指定できます。他のリンクは相対的なままにすることができます。
1 つの落とし穴は、https で提供したページで相対リンクを使用すると、それらが https のままになることです。たとえば、すべてのページでレンダリングされる共通のトップ ナビゲーション バーがある場合、ホームページなどの通常の (http) ページでは、そのバーの相対リンクも http になります。ただし、登録などの https ページで、ユーザーがそのトップ ナビゲーション バーを使用して別の場所をクリックすると、相対リンクは https になり、周囲のページのプロトコルを「継承」します。知っておくべきことだけです。https を必要としない場合に呼び出すのは理想的ではありません。そのような要求を処理するには計算コストが高くなるためです。
アップデート
@user1537158 とのさらなる議論により、すべてのページに対して https が生成されていることが明らかになりましたが、これは望ましい動作ではありませんでした。さらに、サーバー環境は Apache が提供する PHP でした。
PHP コードが原因ではない可能性が高く、一部の Apache 構成が原因である可能性が高くなります。この動作の原因となっている「書き換えルール」が存在する可能性があります。「リライト ルール」とは、着信リクエストを何らかの方法で変更するように Apache に指示するディレクティブです。たとえば、リダイレクトや拒否などです。
ここに私が言及していることの簡単な概要があります:
http://wiki.apache.org/httpd/RewriteHTTPToHTTPS
したがって、この特定のケースの次のステップ:
- システム管理者に構成を再確認してもらいます。これは、httpd.conf、または Apache によって参照されるその他の構成ファイルにある可能性があります。.htaccess ファイルでもこれを行う方法があり、提供される個々のディレクトリに存在する可能性があります。
- すべての URL が https に書き換えられる理由を調査する
- 特定の URL を強制的に https にする書き換えルールを設定する
- コード内のリンクとアクション (PHP、テンプレート、JavaScript など) が、安全なページに移動するときに、https プロトコルを含む絶対 URL を適切に参照していることを確認してください。