HTAccess:サブドメインを別のプロトコルにリダイレクトする

HTAccess:サブドメインを別のプロトコルにリダイレクトする

私のteampeakサブドメインがts3プロトコルに直接リダイレクトされるようにサブドメインのルールを作成したいと思います。

それでは、例を示します。

RewriteCond %{HTTP_HOST} ^(ts\.)?example\.com$ [NC]
RewriteRule ^(.*)$ ts3://example.com/$1 [R=301,L]

残念ながら、この方法は機能しません(無限ループが発生します)。

正直言って、私は.htaccessの経験がありません。どんな姿でなければなりませんか?いくつかの他の例を試しましたが、ほとんどはディレクトリに書き換えるか、別のドメインにリダイレクトするため、例はありません。

私は努力することができますか?

ベストアンサー1

長い話を短く .htaccessこれは設計されておらず、TS3は複数のプロトコル関連の理由でApacheのHTTPトラフィックを理解できません。最善の解決策は、ドメインのDNS設定にts.example.comエイリアスを作成し、クライアントにTeamspeak接続ポートがある場所に接続するように要求することです。example.comts.example.com:xx

.htaccessこのファイルはApache Webサーバーで使用されます。 HTTP トラフィックを処理するシステムの一部です。 Teamspeak 3はHTTPサーバーではないため、HTTPトラフィックを理解できません。したがって、ファイルを使用してHTTPトラフィックをTS3にリダイレクトすることは.htaccess(正しいアプローチであると仮定して)あまり意味がありません。 TS3 は HTTP 要求を理解できないため、要求を削除します。

Teamspeakサービスはアドレスではなくポートに関連付けられます。を使用すると、netstat実際にポートを見つけることができます。私はTeamspeakを知りませんが、ポート9987と10011について聞いたことがあります... TS3設定を確認する必要があります:)

ts.example.comすべてをからリダイレクトするには、このように機能するexample.comようにドメイン名を設定することをお勧めします。指定されたts.example.com別名の場合、そのexample.com別名に送信されたすべての要求がts.example.com:9987到着しますexample.com:9987。この構成は通常、特権ネームサーバーによって処理され、変更を適用するにはDNSゾーン管理にアクセスできる必要があります。

今リダイレクトみんな特に、ts.example.comポート9987のトラフィックはより複雑で非生産的です。 Teamspeakは複数のポート(クエリ、音声データ、ファイル転送...)を使用します。すべてを9987に送信すると、クエリとファイル転送が受信されず、初期接続が機能しなくなる可能性があります。また、クライアントは名前を確認した後にIP経由で接続するts.example.comため、コンピュータからの着信トラフィックを区別することはできません。example.com

HTTPサーバー(またはプロキシ)は実際にHTTPヘッダーを使用して区別できますが、Hostここで処理する必要があるプロトコル関連の問題がたくさんあります。

  • HTTPは接続ベースなので、トラフィックはTCPからUDPに移動する必要があります(タワーこんにちは!)。
  • Host: TS3バイナリデータのみを残すようにヘッダーを削除する必要があります。もちろん、テキストとバイナリデータを混在させるのは悪い考えです。
  • プロキシはまた、ファイル転送とTS3クエリで音声データを区別することができなければならず、そのようなプロキシは存在しないと確信しています。
  • ...

おすすめ記事