すべてのサブドメインがサブフォルダーにリダイレクトされるようにルールを追加したいと思います。例えば:
app1.example.com -> example.com/app1
app2.example.com -> example.com/app2
something.example.com -> example.com/something
すべてのサブドメインの深さは1レベルのみになります。
質問
どのDNSプロバイダーがこれを許可していますか?
すべての有能なもの。 DNS固有の提供である必要はなく、ほとんどの優れたホストがこれにも役立ちます。 2つの段階があります:
*.example.com
のDNSエントリが追加されました*.example.com
のVirtualHost
にルーティングすることでexample.com
に応答するように設定されています。次に、最後に、RewriteRule
を使用して各サブドメインをキャッチする.htaccess
エントリを追加し、HTTP_Host
変数を使用してフォルダにリダイレクトします。
テストされていませんが、次のようなものです。
RewriteEngine on
RewriteCond %{HTTP_Host} ^[^.]+\.example\.com$
RewriteRule ^(.+) %{HTTP_Host}$1 [C]
RewriteRule ^([^.]+)\.example\.com(.*) http://example.com/$1/$2
ユーザーがapp1.example.com/bob
を要求するとします。
これにより、app1.example.com
内のHTTP_Host
がキャッチされます。これはRewriteCond
と一致します。
通常、ApacheはRewriteRule
に対してチェックされる/bob
のみを渡します。サブドメインを使用するには、次のルールを強制的に一致させることでChainingを悪用します
${HTTP_Host}$1
| ^ /bob
^ app1.example.com
最後のRewriteRule
はapp1.example.com/bob
と一致し、not/bob
だけと一致します。その結果、このサブドメインとパスの両方に一致し、目的のリダイレクトを実行するための「完全な」正規表現を持つことができます。
この機能が必要ない場合は、ルールを簡略化できます。
これらの代替案は実行可能ですか?それらすべてを、適切なサブフォルダーにリダイレクトする静的IPを持つ特別なWebアプリにリダイレクトします。それらがどのサブドメインから来たのかをどうやって知ることができますか?
これを行う確実な方法はありません。あなたはできた HTTPリファラーを試してみましたが、すべてのブラウザから送信されたわけではありません常に一部のファイアウォールはヘッダーを削除します。
必要なときにプログラムで各ルールを作成します。ルールを追加するためのAPIアクセス権を持つDNSプロバイダーはどれですか?ここではAmazonRoute53が答えかもしれないと思います。
これは実際には上記のより複雑なソリューションになるので、お勧めしません。また、遅延が発生します。DNSキャッシュを更新する必要があり、特定の訪問者は、更新するまでサブドメインをすぐに使用できません。少なくとも上記の私の提案では、彼らはすぐに始めることができるでしょう。