2016-04-20 10 views
1

Ich habe eine ganze Reihe von Domänen, die auf einen Server zeigen müssen, und sie alle haben eine ähnliche Domäne, in der sich nur die Stadt ändert.htaccess Rewrite-Regel für ähnliche Domänen

Jede Stadt ist in einem separaten Ordner auf dem Server, so zum Beispiel/NewYork wird „shoppinginnewyork.com“ und/california „shoppingincalifornia.com“

Gibt es eine Möglichkeit, dass ich einen regulären Ausdruck einrichten kann Regel für jede zukünftige Domain, so dass sie automatisch die Stadt aufnimmt und auf die neue Domain umleitet oder umschreibt? Sie werden alle beginnen mit "shoppingin" ..

Dank

+0

ist alle Domain auf dasselbe Verzeichnis oder anderes Verzeichnis ausgerichtet? –

+0

Jede Seite befindet sich in einem anderen Verzeichnis, zB/sites/newyork und/sites/california – Tim

+0

Sie können versuchen, regexp beim Umschreiben zu verwenden, wie zB 'shoppingin (. *) \. Com' in rewrite cond und diesen Eingang benutzen' $ 1, wenn ich nicht falsch für die nächste Bedingung überprüfe, existiere dirrectory, nachdem du diese '$ 1' in der Rewrite-Regel für das Aktualisieren der Anfrage verwenden kannst. – Naumov

Antwort

1

Sie einen Platzhalter in Ihrer Virtual der Direktive Serveralias verwenden:

Werfen Sie einen Blick auf unter Apache virtualHost Konfiguration:

<VirtualHost *:80> 

    ServerAlias shoppingin*.com 

    DocumentRoot "/sites" 

    # Then rewrite subdomains into different directories 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^shoppingin(.*).com$ 
    # Use the %1 captured from the HTTP_HOST 
    # For example shoppinginnewyork.com writes to /sites/newyork 
    RewriteRule ^(.*)$ "/sites/%1/$1" [L] 
</VirtualHost> 

Getestet auf lokalen Machin für zwei Domains.

+0

Was ist der Zweck von '% 1 /% 1' zu diesem Zeitpunkt zweimal? – Martin

+0

@Martin gibt es% 1 und $ 1 -% 1 wird die (*) von HTTP-Host, während $ 1 wird die URL zu bestimmten Ordner neu schreiben ... –

+0

haha, entschuldigung, sah es wieder meine Augen sah zuvor zwei Prozentzeichen, anstatt ein Prozent und ein Dollar. Danke für die Info :) – Martin