2009-10-09 7 views
1

J'ai un domaine domain.com que j'utilise comme domaine principal. Je possède également un second domaine domain2.com que je passe automatiquement à domain.comRègles .htaccess avec un sous-domaine et deux domaines

Cela se fait avec .htaccess:

RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC] 
RewriteRule (.*) http://www.domain.com/$1 [L,R=301] 

Je veux mettre en place un sous-domaine sub.domain.com mais avec cette .htaccess actuelle, visite sous. domain.com me envoie à www.domain.com/sub

J'ai trouvé this question, ce qui permet de résoudre ce problème, mais nie mon premier numéro de domain2.com pointant vers domain.com

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 

Je suis à la recherche d'un moyen de combiner les deux règles:

www.domain.com => www.domain.com
domain.com => www.domain.com
domain2.com => www.domain.com
sub.domain.com => sub.domain.com

+0

J'ai ajouté une prime à cette question. La réponse fournie par Gumbo est proche, mais ne répond pas tout à fait à la question. – idrumgood

Répondre

1
RewriteCond %{HTTP_HOST} !^([^.]+\.)example\.com$ [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.example.com%{REQUEST_URI} [L,R=301] 

Pour résoudre votre problème: D

+0

Ceci est celui qui fonctionne, cependant, je ne peux pas sembler accepter la réponse. Désolé Mez. – idrumgood

+0

Bizarre ... Je me demande qui a été la prime si vous ne pouvez pas accepter une réponse – Mez

1

vous auriez besoin de resserrer vos RewriteConds afin qu'ils ne correspondaient aux noms d'hôte spécifiques que vous vouliez faire correspondre et le changement, comme «^domaine \ .com $ » et '^(www \.)? domain2 \ .com $ '. Pour le moment, ils vont à peu près tout faire, donc ils vont interférer.

Mais avez-vous besoin de le faire dans .htaccess? Il est beaucoup plus propre à faire avec un simple Redirect dans votre configuration principale du site:

<VirtualHost *:80> 
    ServerName www.domain.com 
    ...your real config... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName www.domain2.com 
    ServerAlias domain2.com 
    ServerAlias domain.com 
    ServerAlias sub.domain.com 
    Redirect permanent http://www.domain.com/ 
</VirtualHost> 

qui obtient aussi les mauvaises choses spécifiques au déploiement de la racine web de votre application.

(je ne pouvais pas travailler si vous vouliez en fait que le sous-domaine est allé à un autre dossier, si vous le faites, supprimez la ligne de sub.domain.com ci-dessus et le mettre dans son propre VirtualHost :)

<VirtualHost *:80> 
    ServerName sub.domain.com 
    Redirect permanent http://domain.com/sub/ 
</VirtualHost> 
+0

Je ne suis pas familier avec les choses de l'hôte virutal ou où faire tout cela. Je n'ai certainement pas à le faire dans .htaccess, mais c'est le seul endroit où je sais (et je ne suis même pas très bon avec ça!) – idrumgood

+0

Je pense qu'il veut dire, avez-vous accès à httpd.conf? – Kev

1

Essayez cette règle:

RewriteCond %{HTTP_HOST} !^([^.]+\.)?example\.com$ [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.example.com%{REQUEST_URI} [L,R=301] 
+0

Ceci est très proche de travailler. Sur les 4 cas énumérés au bas de la question, tous fonctionnent sauf le second. Si je vais juste à 'domain.com', il n'ajoute pas le www (ce que je voudrais qu'il fasse). – idrumgood

1

cela fonctionnerait simplement:

RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC] 
RewriteCond %{HTTP_HOST} !^sub\.domain\.com$ [NC] 
RewriteRule (.*) http://www.domain.com/$1 [L,R=301] 
Questions connexes