開発中のWebサイトの安全な部分(httpsを使用して特定のページまたはフォルダーに入る)にいる場合、normalページへの相対リンクも自動的にhttpsに変換されます。
<a>タグにhttpsプロトコルではなくhttpプロトコルを常に使用するように指示する方法(またはその逆)はありますか?
完全なリンク( http://www.mysite.com/index.html または https:// www。 mysite.com/index.html )ですが、相対リンク(index.html、../index.htmlなど)で機能させたいのですが。
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]
それについてのすべてを読んでください:
次の構文を使用して、すべての内部リンクをプロトコル非依存にすることができます。
<a href="//some/file/on/your/domain.php">link text</a>
の代わりに
<a href="some/file/on/your/domain.php">link text</a>
//
は、ページがロードされたプロトコルをリンクが尊重するようにします。
これがまさにあなたが探していたものかどうかはわかりませんが、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を強制するリンクに追加します。
別のプロトコルを使用しているため、相対ハイパーリンクでこれを行う方法はありません。ftpの場所へのリンクと同じです。