2009-04-28 8 views
2

J'ai récuré le net et SO et je ne peux pas contourner ou traverser ce problème.Hôtes virtuels Apache et conflits mod_rewrite

Nous avons un tas de sous-domaines et quelques serveurs dédiés. Un serveur remplit deux fois le triple rôle de suivi des problèmes et de page de destination. Le problème est que la page d'atterrissage générique ne vous amène pas à la bonne page d'hôte virtuelle parfois. J'ai regardé les caractères génériques mais ils semblent particulièrement larges.

Notre scénario est le suivant:

- www.askia.com est le principal site d'atterrissage. Un sous-domaine non-existant (wildcard) devrait toujours atterrir ici.
- dev.askia.com est le support technique et le site des questions. Il a quelques mod_rewrites pour https. Ça m'a pris du temps, mais je l'ai fait fonctionner et je préfère ne pas le casser.
- www.askia.fr est notre site français. Au lieu de vous prendre pour www.askia.com il vous emmène à l'dev.askia.com.
- www.askia.co.uk devrait vous prendre à www.askia.com mais il va dev.askia.com

Je ne suis pas tout à fait sûr où je devrais essayer de réparer la solution. Devrais-je faire quelque chose dans le CNAME? Dans le fichier de configuration virtualhosts ou dans le fichier mod_rewrite.

+0

vote pour près appartient à serverfault.com - il est dans la zone grise, mais je pense qu'il a plus à voir avec la configuration du système et la configuration apache que la programmation ... –

Répondre

1

Essayez ces règles:

RewriteCond %{HTTP_HOST} ^dev\. 
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$ 
RewriteRule^http://dev.askia.com%{REQUEST_URI} [L,R=301] 

RewriteCond %{HTTP_HOST} !^www\.askia\.com$ 
RewriteCond %{HTTP_HOST} !^dev\.askia\.com$ 
RewriteRule^http://www.askia.com%{REQUEST_URI} [L,R=301] 

La première règle redirige toutes les demandes à un hôte commençant par dev. mais pas dev.askia.com-www.askia.com. Et la deuxième règle redirige les demandes à un hôte autre que www.askia.com et dev.askia.com à www.askia.com. Donc, chaque demande doit soit aller à dev.askia.com ou www.askia.com.

+0

merci, je vais donner cette un coup de feu. Si j'ajoute d'autres sous-domaines, je dois les ajouter à la rewreiteconde? –

+0

Oui. Mon exemple n'autorise que 'dev. ...' et 'www \. ...'. Les noms d'hôtes avec un autre début seraient redirigés vers 'www.askia.com'. – Gumbo

1

Lors de l'utilisation des hôtes virtuels dans Apache le premier sera toujours hébergés la liste la valeur par défaut pour les non-matches.

#default vhost 
# any non-matches will land here 

<VirtualHost _default_:80> 
ServerName www.askia.com:80 
DocumentRoot /path/to/site 

ErrorLog /path/ti/sites/logs/error_log 

</VirtualHost> 


# vhost #2 

<VirtualHost _dev_Site_:443> 
ServerName dev.askia.com:443 
DocumentRoot /path/to/dev/site 

ErrorLog /path/to/dev/sites/logs/error_log 

#ssl details 
SSLEngine on 
SSLCipherSuite HIGH:MEDIUM 
SSLCertificateFile /location/securti.crt 
SSLCertificateKeyFile /location/securti.key 


#any rewrite rules to apply only to this (default) domain 
# force SSL for instance.. 
RewriteRule .* - [F] 
RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule (.*) https://dev.askia.com/ 
</VirtualHost> 

#etc, etc 
+0

Alors, comment puis-je changer cet ordre. La seule chose que j'ai dans le fichier apache2.conf est une référence au répertoire sites-enabled. Je ne trouve rien sur la façon de changer cette commande, sauf décharger le site par défaut ce qui est impraticable. –

+0

Joe - quel que soit le domaine est le premier sera votre tout attraper. Pour changer cela, il suffit d'en énumérer un autre en premier. J'ai édité mon post original pour inclure un exemple de configuration de vhost qui fait de www votre défaut et force les développeurs. être ssl – Eddie

Questions connexes