Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-02-2009 10:10:15

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[Résolu]Problème (assez grave) Virtual hosts

Bonjour,

J'ai fait un peu le tour du net, j'ai également tenté ma chance sur le forum "Apache" de developpez.net et je n'arrive décidément pas à m'en sortir avec mon histoire smile

Peut-être que certains ici sauront m'aider !

On me demande d'administrer un serveur PHP, chose que je n'ai jamais fait.
Installation de l'environnement pas de pb, Apache, Zend etc., ça je sais faire.

Je pense que la config de mon httpd est bonne et sécurisée.

Mon problème se situe au niveau des VirtualHost et les url avec et sans "www", mais aussi la distinction entre les .com et les .fr pour un même site.

Ce que je veux surtout éviter c'est de générer du duplicate content, et donc éviter l'emploie des instructions ServerAlias.

Ce serveur gère pour l'instant une seule et unique IP.

Donc voilà un exemple de virtualhost que j'ai mis en place :

Code:

   NameVirtualHost 83.206.XX.XX:80
   
   ####################################
   ## www.domaine-un.com
   ## 
   ####################################
    <VirtualHost www.domaine-un.com:80>
        ServerName www.domaine-un.com
        ServerAdmin admin@domaine-un.com
        DocumentRoot "D:/website/www/domaine-un/public"
        ErrorLog "D:/website/logs/www.domaine-un.com-error_log"
        TransferLog "D:/website/logs/www.domaine-un.com-access_log"
        <Location />
            # Règles de réécriture
            RewriteEngine On

            # Pour url sans "www"
            RewriteCond %{HTTP_HOST} !^www\.domaine-un\.com [NC]
            RewriteRule (.*) http://www.domaine-un.com%{REQUEST_URI} [QSA,R=301,L]

            # Zend
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
        </Location>
        <Directory "D:/website/www/domaine-un/public">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

    
   ####################################
   ## www.domaine-deux.com
   ## 
   ####################################
    <VirtualHost www.domaine-deux.com:80>
        ServerName www.domaine-deux.com
        ServerAdmin admin@domaine-deux.com
        DocumentRoot "D:/website/www/domaine-deux/public"
        ErrorLog "D:/website/logs/www.domaine-deux.com-error_log"
        TransferLog "D:/website/logs/www.domaine-deux.com-access_log"
        <Location />
            # Règles de réécriture
            RewriteEngine On

            # Pour url sans "www"
            RewriteCond %{HTTP_HOST} !^www\.domaine-deux\.com [NC]
            RewriteRule (.*) http://www.domaine-deux.com%{REQUEST_URI} [QSA,R=301,L]

            # Zend
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
        </Location>
        <Directory "D:/website/www/domaine-deux/public">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

Le problème c'est que pour tous les domaines qui suivent domaine-un.com (le premier du fichier), lorsque je saisi l'url dans le navigateur sans les "www", je suis systématiquement redirigé (pas vraiment une redirection à mon avis) vers www.domaine-un.com.

C'est très très gênant. Le seul moyen d'y remédier est d'ajouter une instruction ServerAlias dans chaque VirtualHost avec le nom de domaine sans "www", et là c'est du duplicate content et c'est pas beau smile

J'ai fait plein de tests, rien à faire, je ne comprend vraiment pas pourquoi.

J'ai également testé en enlevant la règle pour l'affichage sans "www" et je suis quand même redirigé vers le premier virtualHost.
Quand un nouveau domaine arrive, tant que je ne crée pas de VirtualHost je suis également dirigé vers le premier du fichier vhosts.


Des idées ? De mon côté je n'en ai plus et ne maitrise pas très bien le sujet...


Merci beaucoup.


A+ benjamin.

Dernière modification par Delprog (05-06-2009 11:36:45)


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#2 13-02-2009 10:39:21

NewSky
Membre
Date d'inscription: 17-12-2007
Messages: 79

Re: [Résolu]Problème (assez grave) Virtual hosts

Salut,
Je comprends pas très bien ton problème avec les instructions ServerAlias. Son but est justement qu'un même virtualHost réponde à plusieurs nom. Il doit donc être paramétré en conséquence.
Ensuite, c'est le rewrite qui doit faire son taf (pour le soit disant DC).

Donc, en prenant exemple pour la config de ton domaine-un.com :

Code:

<VirtualHost 83.206.XX.XX:80>
        ServerName www.domaine-un.com
        ServerAlias domaine-un.com
        ServerAlias domaine-un.fr
        ServerAlias www.domaine-un.fr
        ServerAlias ...
# On peut écrire tous les ServerAlias en une seule ligne : ServeurAlias domaine-un.com www.domaine-un.fr domaine-un.fr ...
        ServerAdmin admin@domaine-un.com
        DocumentRoot "D:/website/www/domaine-un/public"
        ErrorLog "D:/website/logs/www.domaine-un.com-error_log"
        TransferLog "D:/website/logs/www.domaine-un.com-access_log"

# Redirection de tous les serveurs alias vers un unique ndd
        RewriteEngine on
        RewriteCond %{HTTP_HOST}   !^www\.domaine-un\.com [NC]
        RewriteCond %{HTTP_HOST}   !^$
        RewriteRule ^/(.*)         http://www.domaine-un.com/$1 [L,R=301]

# Config de zend
        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]

        <Directory "D:/website/www/domaine-un/public">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

Je pense que c'est ce que tu cherches à faire non ?

Hors ligne

 

#3 13-02-2009 10:49:15

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Problème (assez grave) Virtual hosts

Oui, c'est le comportement que je cherche.

Es-tu certain que cette config permet de ne pas considérer les alias comme du duplicate content ?


De mon côté en cherchant encore un peu, j'arrive à un résultat convenable avec la config suivante :

Code:

   NameVirtualHost 83.206.XX.XX:80
   
   ####################################
   ## www.domaine-un.com
   ## 
   ####################################
    <VirtualHost domaine-un.com:80>
        ServerName www.domaine-un.com
        ServerAdmin admin@domaine-un.com
        DocumentRoot "D:/website/www/domaine-un/public"
        ErrorLog "D:/website/logs/www.domaine-un.com-error_log"
        TransferLog "D:/website/logs/www.domaine-un.com-access_log"
        <Location />
            # Règles de réécriture
            RewriteEngine On

            # Pour url sans "www"
            RewriteCond %{HTTP_HOST} !^www\.domaine-un\.com [NC]
            RewriteRule (.*) http://www.domaine-un.com%{REQUEST_URI} [QSA,R=301,L]

            # Zend
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
        </Location>
        <Directory "D:/website/www/domaine-un/public">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

    
   ####################################
   ## www.domaine-deux.com
   ## 
   ####################################
    <VirtualHost domaine-deux.com:80>
        ServerName www.domaine-deux.com
        ServerAdmin admin@domaine-deux.com
        DocumentRoot "D:/website/www/domaine-deux/public"
        ErrorLog "D:/website/logs/www.domaine-deux.com-error_log"
        TransferLog "D:/website/logs/www.domaine-deux.com-access_log"
        <Location />
            # Règles de réécriture
            RewriteEngine On

            # Pour url sans "www"
            RewriteCond %{HTTP_HOST} !^www\.domaine-deux\.com [NC]
            RewriteRule (.*) http://www.domaine-deux.com%{REQUEST_URI} [QSA,R=301,L]

            # Zend
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
        </Location>
        <Directory "D:/website/www/domaine-deux/public">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

C'est à dire en ayant l'instruction:

Code:

<VirtualHost domaine-deux.com:80>

au lieu de:

Code:

<VirtualHost www.domaine-deux.com:80>

Je ne comprend pas bien pourquoi à l'inverse ce n'est pas vrai, puisque tout pointe sur la même ip.
Si apache se fie vraiment au "nom", que j'ai un vhost avec "www.domaine.com", que je saisi "domaine.com", il ne trouve rien (recherche par nom exacte ou quoi?), par contre si j'ai un vhost "domaine.com" et que je saisi "www.domaine.com" dans mon navigateur là il le trouve. Je ne comprend pas trop ce comportement.

Mis à part ça, est-ce ma config est convenable de cette manière ?


Merci pour ton aide,

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#4 13-02-2009 11:51:57

NewSky
Membre
Date d'inscription: 17-12-2007
Messages: 79

Re: [Résolu]Problème (assez grave) Virtual hosts

En réalité - et paradoxalement - la configuration que tu veux faire est basée sur l'IP (Support Apache des serveurs virtuels par IP).
Or toi, du veux que ton serveur réponde en fonction du nom : Support Apache des serveurs virtuels par nom. Et pour finir dans les liens, je te conseille de jeter un œil aux exemples de configs fournis par Apache.

Pour ma part, j'ai toujours configuré mes serveurs de la manière que je t'ai indiqué (2 serveurs, +150 sites x ~3/10 ServerAlias).

Au niveau de la config des vhosts, comme je te l'indiquai, les alias permettent d'associer plusieurs noms à un vhost. Sans Rewrite de configuré, effectivement, tu te retrouveras avec toutes les possibilités d'URL définie grâce aux ServerAlias. Ton serveur répondra donc correctement aux urls domaine-un.com, www.domaine-un.com, domaine-un.fr ...., et il se pourrait que tu te retrouve avec un duplicate content.
Mais le rewrite configuré juste après le paramétrage des ServerAlias est là pour éviter ce problème : toute url qui n'est pas www.domaine-un.com est redirigé vers lui, avec un code 301. Il n'y aura donc qu'une seule et unique adresse disponible qui sera fonction de ta conf de ton rewrite.

Sinon, ta section <Location /></Location> ne sert à rien puisque par défaut, les directives s'appliquent à la racine - donc / -.

Pour la config de Zend, rien à dire, c'est celle recommandée ;-).

Dernière modification par NewSky (13-02-2009 11:52:41)

Hors ligne

 

#5 13-02-2009 12:08:39

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Problème (assez grave) Virtual hosts

Ok merci pour ces explications.

Je me suis permis de montrer ta solution sur un autre fofo pour avoir un 2ème avis d'expert. Et bonne nouvelle, il confirme :p

En fait je n'ai pas de problème avec les règles de ré-écritures, je les comprend bien (et heureusement depuis le temps). Par contre je ne suis pas encore très habitué aux différents comportements d'Apache. Et je ne me sens pas forcément à l'aise avec la config et la sécurité, toujours des doutes qui planent.

Mais bon, "il n'y a que toi pour le faire" me dit-on smile


En tout cas merci pour ton aide.


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 13-02-2009 12:46:50

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Problème (assez grave) Virtual hosts

Question complémentaire:

Ca ne fonctionne pas sans le:

Code:

<Location />

</Location>

Il me sort un Bad Request, erreur 400.

Je pense savoir pourquoi, mais je ne suis pas sûr, et je ne sais pas comment faire mieux.

Dans la config du httpd, j'ai placé les lignes suivantes :

Code:

DocumentRoot "D:/website/www/_documentroot"

Si j'entre directement l'ip dans le navigateur, il pointe donc toujours vers ce dossier qui ne contient qu'un index donnant des infos sur le serveur.

Je suppose que le [i]<Location />[i] est obligatoire à cause de ça, et ce n'est qu'une supposition smile

Quel est l'idéal pour ce DocumentRoot ?


Merci.

A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages