テクノロジー アパッチHTTP 非公開: Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

サイトをサブフォルダーの下に置いていたので、ドメインのルート レベルに移動することにしました。

主な課題は、URL をドメインのルートまたは別の場所にリダイレクトしながら、すべての記事をサブフォルダーと同じパスに保持することでした。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

アパッチ

Apache HTTP サーバーは RewriteCond をサポートします。この変更を行うには、 .htaccess または httpd.conf ファイルを編集し、以下の行を追加します。

 RewriteEngine on
RewriteBase /
RewriteRule ^subfolder/(.*)$ /$1 [R=301,NC,L]

ここではベースとして / を使用しており、 RewriteRule は正規表現を使用してサブフォルダー内のすべての URL に対して機能します。 R=301 永続的なリダイレクトを指定します。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

Nginx

/etc/nginx/nginx.conf または /etc/nginx/conf.d/default.conf rewrite ディレクティブを使用して、Nginx Web サーバーでも同様のリダイレクトを実現できます。

 location ^~ /subfolder {
     rewrite ^/subfolder(.*)$ $1 last;
}

ここで ^~ 修飾子を使用すると、将来正規表現の場所を追加した場合でも、このプレフィックスの場所が引き続き優先されるようになります。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

IIS

IIS では、Rewrite モジュールを使用して、サブフォルダー内にある URL を書き換えて、URL がルート内にあるかのように表示できます。 Webroot フォルダー ( %SystemDrive%\inetpub\wwwroot ) 内の web.config ファイルを次のように編集できます。

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Root_URL_Rewrite" stopProcessing="true">
                    <match url="^(.*)" />
                    <action type="Rewrite" url="/subfolder/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

あるいは、IIS マネージャーの URL 書き換え UI をさらに使用して、受信ルールを追加することもできます。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

クラウドフレア

以下の手順に従って、Cloudflare を使用して同様のリダイレクトを実現できます。

  • Cloudflareアカウントにログインします。
  • URL 転送を追加するドメインの適切な Cloudflare アカウントをクリックします。
  • 「ルール」アプリをクリックし、「ページルール」タブをクリックします。
  • [ページ ルール] で、[ページ ルールの作成] をクリックします。ドメインの [ページ ルールの作成] ダイアログが開きます。
  • ここで、「URL が一致する場合」に、ルールに一致するサブフォルダーの URL パターン (例: https://example.com/subfolder ) を入力します。
  • 次に、[設定の追加] をクリックし、ドロップダウン メニューから [転送 URL] を選択します。
  • [ステータス コードの選択] をクリックし、301 (永続的リダイレクト) または 302 (一時的リダイレクト) を選択します。
  • ルート ドメインの宛先 URL を入力し、[保存して展開] をクリックして完了します。

上記の例は、https://.com/blog からすべてを https://.com にリダイレクトします。

まとめ

ご覧のとおり、サブフォルダーをルートまたは別の URL にリダイレクトまたはマッピングすることは一般的なタスクであり、さまざまなオプションを備えたほとんどの一般的なブラウザーでサポートされています。

次に、単一の IP で複数の Web サイトをホストする方法を確認します。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

「 Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします」についてわかりやすく解説!絶対に観るべきベスト2動画

【Webサーバー】NginxとApacheって何が違うのか解説してみた
Free SSL Authentication Using Cloudflare on Windows IIS Server (2023)

サイトをサブフォルダーの下に置いていたので、ドメインのルート レベルに移動することにしました。

主な課題は、URL をドメインのルートまたは別の場所にリダイレクトしながら、すべての記事をサブフォルダーと同じパスに保持することでした。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

アパッチ

Apache HTTP サーバーは RewriteCond をサポートします。この変更を行うには、 .htaccess または httpd.conf ファイルを編集し、以下の行を追加します。

 RewriteEngine on
RewriteBase /
RewriteRule ^subfolder/(.*)$ /$1 [R=301,NC,L]

ここではベースとして / を使用しており、 RewriteRule は正規表現を使用してサブフォルダー内のすべての URL に対して機能します。 R=301 永続的なリダイレクトを指定します。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

Nginx

/etc/nginx/nginx.conf または /etc/nginx/conf.d/default.conf rewrite ディレクティブを使用して、Nginx Web サーバーでも同様のリダイレクトを実現できます。

 location ^~ /subfolder {
     rewrite ^/subfolder(.*)$ $1 last;
}

ここで ^~ 修飾子を使用すると、将来正規表現の場所を追加した場合でも、このプレフィックスの場所が引き続き優先されるようになります。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

IIS

IIS では、Rewrite モジュールを使用して、サブフォルダー内にある URL を書き換えて、URL がルート内にあるかのように表示できます。 Webroot フォルダー ( %SystemDrive%\inetpub\wwwroot ) 内の web.config ファイルを次のように編集できます。

 <?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Root_URL_Rewrite" stopProcessing="true">
                    <match url="^(.*)" />
                    <action type="Rewrite" url="/subfolder/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

あるいは、IIS マネージャーの URL 書き換え UI をさらに使用して、受信ルールを追加することもできます。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

クラウドフレア

以下の手順に従って、Cloudflare を使用して同様のリダイレクトを実現できます。

  • Cloudflareアカウントにログインします。
  • URL 転送を追加するドメインの適切な Cloudflare アカウントをクリックします。
  • 「ルール」アプリをクリックし、「ページルール」タブをクリックします。
  • [ページ ルール] で、[ページ ルールの作成] をクリックします。ドメインの [ページ ルールの作成] ダイアログが開きます。
  • ここで、「URL が一致する場合」に、ルールに一致するサブフォルダーの URL パターン (例: https://example.com/subfolder ) を入力します。
  • 次に、[設定の追加] をクリックし、ドロップダウン メニューから [転送 URL] を選択します。
  • [ステータス コードの選択] をクリックし、301 (永続的リダイレクト) または 302 (一時的リダイレクト) を選択します。
  • ルート ドメインの宛先 URL を入力し、[保存して展開] をクリックして完了します。

上記の例は、https://.com/blog からすべてを https://.com にリダイレクトします。

まとめ

ご覧のとおり、サブフォルダーをルートまたは別の URL にリダイレクトまたはマッピングすることは一般的なタスクであり、さまざまなオプションを備えたほとんどの一般的なブラウザーでサポートされています。

次に、単一の IP で複数の Web サイトをホストする方法を確認します。

Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします
Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします

「 Apache、NGINX、IIS、Cloudflareのサブフォルダーをルートフォルダーにリダイレクトします」についてわかりやすく解説!絶対に観るべきベスト2動画

【Webサーバー】NginxとApacheって何が違うのか解説してみた
Free SSL Authentication Using Cloudflare on Windows IIS Server (2023)