将流量重定向到具有端口号的域,而不显示URL中的端口号

时间:2016-08-30 12:15:56

标签: angularjs node.js .htaccess mod-rewrite gulp

我在www.myurl.com:3001上运行了Node.js / Angularjs / Gulp应用程序,我希望有一个“干净”的URL www.myurl.com。所以我想将流量从www.myurl.com重定向到www.myurl.com:3001,这在.htaccess mod重写条件下非常直接。但我得到的是从www.myurl.com到www.myurl.com:3001的重定向,我希望看到应用程序在URL下的端口3001上运行而没有任何其他端口,以便任何访问该URL的用户www.myurl.com看到该应用程序在www.myurl.com:3001上运行,但在他的浏览器中有一个没有任何端口号的“干净”URL:www.myurl.com。

最好的方法是什么? 这是我到目前为止所得到的:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.myurl.com [NC]
RewriteRule (.*) http://www.myurl.com:3001/$1 [R=301,L]

任何提示或帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

您无法重定向,因为它始终显示端口。

您需要在Apache中配置反向代理。这可以像在this StackOverflow answer中那样完成,并且在您的apache配置中看起来有点像这样:

<VirtualHost *:80>
    ServerAdmin admin@myurl.com
    ServerName myurl.com
    ServerAlias www.myurl.com

    ProxyRequests off

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    <Location />
        ProxyPass http://localhost:3001/
        ProxyPassReverse http://localhost:3001/
    </Location>
</VirtualHost>

答案 1 :(得分:1)

两种方法

  1. 更改端口号

    Listen 3001

  2. http://httpd.apache.org/docs/2.2/mod/mpm_common.html#listen

    1. 反向代理

      <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName www.myurl.com ServerAlias myurl.com ProxyPass / http://myurl.com:3001/ ProxyPassReverse / http://myurl.com:3001/ </VirtualHost>