mod_rewrite
を使用して、基本的にサブドメインのポートを別のIPの別のポートにポート転送しようとしています。
このような:
sub.website.com:2000 --> 123.45.67.891:3000
.htaccess
ファイルとmod_rewrite
を使用して、これをどのように実現できますか?
私は以下を試しましたが、役に立ちませんでした:
RewriteCond %{HTTP_Host} ^sub.website.com$ [NC]
RewriteCond %{SERVER_PORT} ^2000$
RewriteRule ^(.*)$ https://123.45.67.891:3000/$1 [L,R=302]
.htaccess
でこれを使用してみてください。
RewriteEngine On
RewriteCond %{HTTP_Host} ^sub.website.com:2000 [NC]
RewriteRule (.*) https://123.45.67.891:3000/$1 [R=301,L]
ここで承認された回答を確認することもできます( http://www.webmasterworld.com/Apache/3264071.htm )。 R = 301は永続的なリダイレクトに使用されます。一時的なリダイレクトを使用する場合は、代わりにR = 302を使用してください。
それでも問題が解決しない場合は、Apacheでプロキシを有効にしてみてください:(/ etc/Apache2/httpd.confを編集してください)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<VirtualHost sub.website.com:2000>
ServerName redirecting
ServerAdmin [email protected]
ProxyRequests off
ProxyPass / http://123.45.67.891:3000
</VirtualHost>
(ここに投稿されたソリューションを見てください Apacheポートフォワーディング )。
.htaccessファイルのRewriteRulesでこれを行うのは困難です。問題は、サーバーがURLからファイル名への変換フェーズを通過した後にのみ.htaccessファイルが読み取られることです。サーバーがサービスを提供する必要のあるリソースがファイルシステム上に存在するという(予備的な)結論に達した後でのみ、サーバーは関連する.htaccessファイルの読み取りを開始します。したがって、これらのリクエストに対して.htaccessファイルが読み取られていない可能性があります。これを見つけるには、rewritelogを有効にします。
これは、メインサーバーの構成で行う必要があります。