Я пытаюсь использовать 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]
Это сложно сделать с помощью RewriteRules в файлах .htaccess. Проблема в том, что файлы .htaccess читаются только после того, как сервер прошел фазу преобразования URL-адреса в имя файла. Только после того, как сервер придет к (предварительному) выводу, что ресурс, который он должен обслуживать, существует в его файловой системе, он начнет читать соответствующие файлы .htaccess. Возможно, ваш файл .htaccess никогда не читается для этих запросов. Включите перезапись, чтобы узнать об этом.
Вы должны сделать это в конфигурации основного сервера.
Попробуйте использовать это в своем .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).