2016-12-26 69 views
1

我在Apache服务器(托管其他非node.js站点)上有一个Node.js应用程序。下面是Apache的安装程序来发送所有的交通www.mysite.com上到节点上的端口12001:在Apache服务器上使用Node.js来访问'www'子域

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName www.mysite.com 
    ServerAlias mysite.com www.mysite.com 

    ProxyRequests off 

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

    <Location /> 
     ProxyPass http://localhost:12001/ 
     ProxyPassReverse http://localhost:12001/ 
    </Location> 

    ErrorLog /var/log/apache2/mysite-error_log 
    TransferLog /var/log/apache2/mysite-access_log 
</VirtualHost> 

而且我想迫使所有的人访问mysite.com重定向到www.mysite.com

在Node中,我无法检查req.headers.host,因为它总是等于localhost:12001,我不确定我应该在哪里放置任何.htaccess文件。

回答

1

只需在服务器配置中执行此操作,不需要.htaccess。补充一点:

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

(我不得不使用标准example.com,而不是你的榜样域作为系统拒绝了)

这是说重定向东西都使用主机www.example.com,除非没有主机指定(以避免在没有主机头的情况下提供请求时发生循环)到www.example.com

这样做,所以它可以处理拼写错误,如ww.example.com(缺少w),如果您添加适当的ServerAlias(也许* .example.com)和DNS条目(也可以使用通配符),也可以涵盖了你所要求的,你不必这样做。

它还保留了URL的休息,所以:

http://example.com/testing 

会重定向到:

http://www.example.com/testing 
相关问题