Apache2 - Umleiten einer Unterdomäne zu einer anderen URL

15

Ich habe zwei Subdomains, a.website.com und b.website.com, die auf dieselbe IP-Adresse verweisen. Ich möchte b.website.com auf a.website.com:8080 umleiten. Ich habe dies in meiner .htaccess-Datei ...

RewriteEngine on
RewriteCond {HTTP_HOST} b\.website\.com
RewriteRule ^(.*)$ http://b.website.com:8080$1 [L]

...aber es funktioniert nicht.

Gibt es eine Möglichkeit, es zum Laufen zu bringen?

Technius
quelle
Versuchen Sie, .htaccessim übergeordneten Verzeichnis über dem gewünschten Verzeichnis Folgendes hinzuzufügen : RedirectMatch ^/foo/$ /foo/bar/oder RedirectMatch ^/foo/$ /bar/baz/. Siehe auch So leiten Sie Apache2 in ein Unterverzeichnis um .
Jww

Antworten:

20

Sie könnten immer einen einfachen VirtualHost verwenden:

<VirtualHost *:80>
  ServerName b.website.com
  RedirectPermanent / http://a.website.com:8080/
</VirtualHost>

Wenn Sie die .htaccess-Datei bevorzugen, fehlt lediglich ein% -Zeichen in der Umschreibebedingung:

RewriteEngine on
RewriteCond %{HTTP_HOST} b.website.com
RewriteRule ^(.*)$ http://a.website.com:8080$1 [L]
mattw
quelle
Ich habe beide ausprobiert und sie haben nicht funktioniert. Ich habe mod_rewrite aktiviert und ich habe den VirtualHost in einer separaten Site-Datei. Fehlt mir etwas?
Technius
3
Das funktioniert gut. Ich hatte ein Schleifenumleitungsproblem, weil ich eine Unterdomäne auf einen Unterordner zeigte und dieser Unterordner umleitete. Jetzt leite ich die Subdomain zu der URL um, die dem Ordner entspricht, und die zweite Umleitung ist in Ordnung!
Paschalis
Wie tun, um zu bewahren http://oder auf https://welche Weise überhaupt b.website.comzugegriffen wurde?
Golar Ramblar
0

Ergänzung der Hauptantwort

Typ umleiten

Sie können die Art der Weiterleitung, die Sie vortäuschen, explizit angeben.
Ich schlage vor, dass Sie beim Testen der Umleitungsregel eine temporäre Umleitung (302) verwenden.

# In a VirtualHost file
...
Redirect [301|302] /old_location http://new_domain/newlocation


# In a .httaccess file
...
RewriteRule ^(.*)$ http://new_domain/$1 [R=302,L]

Geben Sie Verzeichnis-Übereinstimmungsmuster an

Sie können nur Anforderungen umleiten, die einem bestimmten Muster entsprechen.

# In a VirtualHost file
...
RedirectMatch [301|302] ^/public/(.*)$ http://public.example.com/$1


# In a .httaccess file
...
RewriteRule ^/public/(.*)$ http://public.example.com/$1 [R=302,L]
ePi272314
quelle