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 :
Sauf que visiblement ça n'empêche pas les moteurs de voir ça comme du "duplicate content".
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>
J'ai donc appliqué les bonnes règles de ré-écritures pour faire une vraie et propre redirection, ex sur le .com :
Celà fonctionne très bien à deux exceptions près.
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>
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:
Si je ne rajoute pas la ligne "ServerAlias titi.com" http://titi.com me dirige vers http://www.toto.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.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>
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 !
Partager