2016-08-14 4 views
4

Auf meiner Website möchte ich meine Foren von einem Unterverzeichnis in eine Subdomain verschieben. Die Foren befinden sich derzeit unter example.com/forums, und ich möchte sie auf forums.example.com verschieben. Nach dem Verschieben möchte ich htaccess verwenden, um den gesamten Forumsverkehr an die Subdomain umzuleiten, aber das Problem ist, dass ich zwei TLDs für meine Site, eine .com Domain und eine .net Domain habe.htaccess Rewrite URL basierend auf TLD

Ich bin derzeit versucht, Verkehr zu umleiten dies mit:

RewriteCond %{HTTP_HOST} !=forums.example.net 
RewriteRule ^forums(/(.*))?$ https://forums.example.net/$2 [L,R=301] 

RewriteCond %{HTTP_HOST} !=forums.example.com 
RewriteRule ^forums(/(.*))?$ https://forums.example.com/$2 [L,R=301] 

Diese nur halb funktioniert. Unabhängig davon, welche TLD ich besuche, leitet es mich immer zu forums.example.net weiter, auch wenn ich von example.com/forums besuche, in diesem Fall möchte ich es zu forums.example.com gehen. Wie könnte ich das erreichen?

Antwort

2

können Sie verwenden diese Seng Regel als erste Regel in forums/.htaccess statt Top-Level-.htaccess:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC] 
RewriteRule ^.*$ http://forums.%1/$0 [L,R=301,NE] 

Für root .htaccess diese Regel als Ihre erste Regel verwenden :

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(?:www\.)?(example\.(?:com|net))$ [NC] 
RewriteRule ^forums(/.*)?$ http://forums.%1$1 [NC,L,R=301,NE] 
+0

Okay, danke! Kann ich die root htaccess-Datei trotzdem benutzen? Ich möchte vermeiden, dass das Verzeichnis tatsächlich existiert, wenn ich es vermeiden kann. – DavidB

+0

Ich bin gerade unterwegs und kann nicht auf meinen Webserver zugreifen, habe es aber schnell mit [diesem htaccess Tester] (http://htaccess.mwl.be/) getestet und es scheint zu funktionieren. – DavidB

+1

Ich habe es gerade auf dem Live-Server versucht, und es funktioniert! Die einzige Änderung, die ich vornehmen musste, war das Ändern von "http: // Foren.% 1/$ 1" in "http: // Foren.% 1 $ 1" in der letzten Zeile, weil der Schrägstrich bei der Umleitung der Subdomain zwei Schrägstriche verursachte eine andere Seite als der Index. – DavidB

1

Bitte verwenden Sie die folgenden Regeln für die richtige Umleitung, um so zu arbeiten, wie Sie es wollen.

Rewritengine On 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteRule ^forums$ http://forums.example.com/? [L,R=301] 
RewriteCond %{HTTP_HOST} ^example\.net$ 
RewriteRule ^forums$ http://forums.example.net/? [L,R=301] 
+0

Danke! Es funktioniert, aber nur, wenn die URL nur 'example.com/forums' oder' example.net/forums' ist. Wenn die URL nach "Foren" etwas hat, selbst wenn es nur ein Schrägstrich ist, funktioniert die Weiterleitung nicht. – DavidB

+0

Egal, ich denke, ich habe es herausgefunden! Ich konnte es zum Laufen bringen, indem ich beide Instanzen von 'RewriteRule^forums $' durch '^ forum /?(.*)$' ersetzte. – DavidB

+0

Eigentlich hat das nicht funktioniert Ich habe Angst. Ich dachte es, aber es tat es nicht. Als ich es auf einem Computer ausprobierte, der es noch nicht zwischengespeichert hatte, bekam ich einen 404-Fehler. – DavidB