1. ホーム
  2. c#

[解決済み】web.config ファイルを使用して HTTPS を強制的に実行する方法

2022-04-02 15:51:07

質問

GoogleやStackOverflowで検索してみたのですが、どれもASP.NETなどに関するもののようです。

私は通常、サーバーにLinuxを使用していますが、このクライアントにはWindowsとIIS 7.5 (およびPlesk 10)を使用しています。このため、私は IISとweb.configに少し不慣れです。 ファイルを作成します。の中に .htaccess ファイルでは、リライト条件を使ってプロトコルが HTTPS であるかどうかを検出し、それに応じてリダイレクトすることができます。また 簡単な方法 Web.config ファイルを使用して、あるいは ' URLリライト をインストールしました。

私は ASP.NETの経験なし もし、これがソリューションに関わるのであれば、どのように実装するか明確なステップを含めてください。

私がこのようにした理由は、web.configと ではなく PHP は、サイト内のすべてのアセットで HTTPS を強制的に実行したいからです。

どのように解決するのですか?

あなたは、URL Rewriteモジュール、好ましくはv2(私はv1がインストールされていないので、それがそこに動作することを保証することはできませんが、それははずです)が必要です。

このようなweb.configの例を示します。これは、すべてのリソースに対してHTTPSを強制します(301 Permanent Redirectを使用します)。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

追伸 この解決策は、URLリライトモジュールだけを使用して行われるため、ASP.NET/PHPやその他の技術とは何の関係もないのですが、リクエストがあなたのコードを実行するポイントに到達する前に、初期レベル/下位レベルのいずれかで処理されます。