web-dev-qa-db-ja.com

相対リンクを使用してhttpsからhttpに(またはその逆に)リンクする簡単な方法

開発中のWebサイトの安全な部分(httpsを使用して特定のページまたはフォルダーに入る)にいる場合、normalページへの相対リンクも自動的にhttpsに変換されます。

<a>タグにhttpsプロトコルではなくhttpプロトコルを常に使用するように指示する方法(またはその逆)はありますか?

完全なリンク( http://www.mysite.com/index.html または https:// www。 mysite.com/index.html )ですが、相対リンク(index.html、../index.htmlなど)で機能させたいのですが。

20
jeroen

Apache mod_rewriteを使用して、ページがhttpまたはhttpsのどちらで提供されるかを制御します。次に、サイトのルートディレクトリの.htaccessファイルからのスニペットの例を示します。

# Redirect most reqests for https to http
RewriteRule ^https://www.example.com(.*) http://www.example.com$1 [R=301,NC]

# Allow some URIs to be https if requested
RewriteCond   %{SERVER_PORT}  ^443$
RewriteCond   %{REQUEST_URI}  !^/images/(.*)$
RewriteCond   %{REQUEST_URI}  !^/scripts/(.*)$
RewriteCond   %{REQUEST_URI}  !^/styles/(.*)$
RewriteCond   %{REQUEST_URI}  !^/store(.*)$
RewriteCond   %{REQUEST_URI}  !^/login.htm$
RewriteRule ^(.*) http://www.example.com/$1 [L,R]

# Force some URIs to be https only
RewriteCond   %{SERVER_PORT}  ^80$
RewriteRule ^store(.*) https://www.example.com/store$1 [L,R]

RewriteCond   %{SERVER_PORT}  ^80$
RewriteRule ^FormSanityKey.htm https://www.example.com/login$1 [L,R]

それについてのすべてを読んでください:

http://httpd.Apache.org/docs/2.0/mod/mod_rewrite.html

10
Jans Carton

次の構文を使用して、すべての内部リンクをプロトコル非依存にすることができます。

<a href="//some/file/on/your/domain.php">link text</a>

の代わりに

<a href="some/file/on/your/domain.php">link text</a>

//は、ページがロードされたプロトコルをリンクが尊重するようにします。

29
Matthew

これがまさにあなたが探していたものかどうかはわかりませんが、Apacheを使用している場合、これを行うために使用できるトリックがあります: http://httpd.Apache.org/docs/2.2/ssl/ ssl_faq.html#relative

基本的には、Apache構成ファイルに以下を記述します。

RewriteEngine on
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]

次に、:SSLをHTTPSを強制する(Webページ内の)リンクに追加し、:NOSSLを通常のHTTPを強制するリンクに追加します。

4
David Z

BASE要素 を使用したいようです。

少なくともそのページのHEADでBASE要素を使用しないと、特定のプロトコルを使用するかどうかをアンカーに「伝える」方法はありません。

絶対リンクではなく相対リンクを使用する理由はありますか? この記事 は、HTTPSで相対リンクを使用する場合の落とし穴について説明しています。サイトが二重にインデックス化される可能性などがあります。

2
Nick Presta

別のプロトコルを使用しているため、相対ハイパーリンクでこれを行う方法はありません。ftpの場所へのリンクと同じです。

2
Damien McGivern