Назад | Перейти на главную страницу

Измените порт и хост, используя .htaccess

Я пытаюсь использовать 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).