2016-12-26 6 views
1

Ich habe eine Node.js App auf einem Apache-Server (der andere non-node.js-Sites hostet). Hier ist der Apache-Setup um den Verkehr zu senden alle auf www.mysite.com zu Knoten auf Port 12001:Ich bevorzuge 'www' Subdomain mit Node.js auf Apache-Server

<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> 

Und Ich möchte alle Menschen zwingen, mysite.com Besuch zu www.mysite.com umgeleitet werden.

Im Knoten kann ich nicht req.headers.host überprüfen, da es immer localhost:12001 entspricht und ich bin mir nicht sicher, wo ich .htaccess Datei setzen sollte.

Antwort

1

Tun Sie es einfach in Ihrer Server-Konfiguration, keine Notwendigkeit für .htaccess. Fügen Sie diese:

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

(ich die Standard example.com anstatt Ihrem Beispiel Domäne verwenden musste, da das System zurückgewiesen, dass)

Dies alles umleiten sagt, dass nicht Verwendung von Host www.example.com ist, es sei denn, kein Host ist angegeben (um Schleifen zu vermeiden, wenn eine Anfrage ohne Host-Header geliefert wird), an www.example.com.

Es ist so gemacht, so kann es mit Rechtschreibfehlern auch wie ww.example.com (ein fehlendes w) arbeiten, wenn Sie die entsprechenden ServerAlias ​​(vielleicht * .example.com) und DNS-Einträge (wieder ein Platzhalter könnte verwendet werden) und auch deckt ab, was du verlangst, du musst das nicht tun.

Es bewahrt auch den Rest der URL, so:

http://example.com/testing 

Wird Umleitung zu:

http://www.example.com/testing 
Verwandte Themen