Bonjour,

Encore une lacune dans mes connaissances en administration de serveur apache.

Je me pose la question du toto.com et www.toto.com.

Sauf qu'en même temps, vient la question du : toto.com, toto.fr, www.toto.com et www.toto.fr

Dans un premier temps, en tant que profane, j'ai créé deux virtual hosts différents, un pour le .com et un pour le .fr et j'ai géré ça en php derrière. (mais ça me dérangeais vraiment dans l'idée :p)

Ensuite, j'ai utilisé l'instruction ServerAlias :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<VirtualHost XX.XX.XX.XX:80>
    ServerName www.toto.com
    ServerAlias www.toto.fr toto.com toto.fr
    ServerAdmin toto@toto.com
    DocumentRoot "D:/website/www/toto/public"
    ErrorLog "D:/website/logs/www.toto.com-error_log"
    TransferLog "D:/website/logs/www.toto.com-access_log"
    <Location />
        # Règles de réécriture
        RewriteEngine On
        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/toto/public">
        #Options Includes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Sauf que visiblement ça n'empêche pas les moteurs de voir ça comme du "duplicate content".

J'ai donc appliqué les bonnes règles de ré-écritures pour faire une vraie et propre redirection, ex sur le .com :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
<VirtualHost XX.XX.XX.XX:80>
    ServerName www.toto.com
    ServerAdmin toto@toto.com
    DocumentRoot "D:/website/www/toto/public"
    ErrorLog "D:/website/logs/www.toto.com-error_log"
    TransferLog "D:/website/logs/www.toto.com-access_log"
    <Location />
        # Règles de réécriture
        RewriteEngine On
        RewriteCond %{HTTP_HOST} !^www\.toto\.com [NC]
        RewriteRule (.*) http://www.toto.com$1 [QSA,R=301,L]
        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/toto/public">
        #Options Includes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Celà fonctionne très bien à deux exceptions près.

La 1ère :

Si je ne précise pas le ServerAlias pour les autres VHOSTS suivants celui là (qui est le premier du fichier), et que dans mon url je n'entre pas les www, je suis redirigé sur le site du premier VHOST du fichier de conf.
Ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
    <VirtualHost XX.XX.XX.XX:80>
        ServerName www.titi.com
        ServerAdmin titi@titi.com
        DocumentRoot "D:/website/www/titi/public"
        ErrorLog "D:/website/logs/www.titi.com-error_log"
        TransferLog "D:/website/logs/www.titi.com-access_log"
        <Location />
            # Règles de réécriture
            RewriteEngine On
            RewriteCond %{HTTP_HOST} !^www\.titi\.com [NC]
            RewriteRule (.*) http://www.titi.com$1 [QSA,R=301,L]
            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/titi/public">
            #Options Includes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
Si je ne rajoute pas la ligne "ServerAlias titi.com" http://titi.com me dirige vers http://www.toto.com.

La 2ème, et là c'est une lacune de ma part :

Je ne sais pas comment gérer les .com et .fr pour un même site.

Enfin, question bonus, pouvez-vous critiquer mon VirtualHost et me dire ce qui vous choque s'il vous plait ? (sécurité par ex.)

Merci beaucoup,


A+ benjamin.


Edit: A quoi sert le $1, dans ces lignes svp ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    RewriteCond %{HTTP_HOST} !^www\.toto\.com [NC]
    RewriteRule (.*) http://www.toto.com$1 [QSA,R=301,L]

Parce que si je le laisse il veut me rediriger vers : http://www.toto.comd/website/www/toto/public

Merci !