Попробуйте использовать это в своем .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 admin@website.com
ProxyRequests off
ProxyPass / http://123.45.67.891:3000
</VirtualHost>
( посмотрите решение, размещенное здесь Переадресация портов Apache ).
Трудно сделать это с помощью RewriteRules в файлах .htaccess. Проблема в том, что файлы .htaccess читаются только после того, как сервер прошел фазу преобразования URL-адреса в имя файла. Только после того, как сервер придет к (предварительному) выводу, что ресурс, который он должен обслуживать, существует в его файловой системе, он начнет читать соответствующие файлы .htaccess. Возможно, ваш файл .htaccess никогда не читается для этих запросов. Включите перезапись, чтобы узнать об этом.
Вы должны сделать это в конфигурации основного сервера.