Heu… par défaut, “www.domaine.tld” vise le dossier “/www/”
Je pense que je pourrais, via le Manager d’OVH, le faire pointer vers /www/site/ mais auquel cas www.domaine.tld/backoffice pointerais alors vers /www/site/backoffice/ or j’aimerais que les dossiers “site/” et “backoffice/” soient côte à côte (pour les problèmes indiqués dans mon premier post).
Ces règles fonctionnent (et sont invisibles au visiteur qui ne voient que /botest/ ou /sitetest/) mais c’est la troisième règle, celle qui “attrape” toute requête autre que botest/ et sitetest/, qui me pose problème (ou alors je n’ai pas compris ton raisonnement qui semble viser à ne pas en avoir besoin ?).
DarKChAm > Désolé mais ta règle RewriteRule ([-/._0-9a-z]*)? /site/abc$1 [L,NC,QSA,NS] me plante invariablement une erreur 500 (ce que je ne comprends pas du tout)
Edit: Finalement ça n’est pas tout le temps invisible.
Sur IE l’URL www.domaine.tld/sitetest/ reste celle inchangée alors que dans SeaMonkey (et donc sûrement Firefox) elle se transforme en www.domaine.tld/site/
Edité le 15/06/2008 à 23:11
Parcontre il n’y a pas vraiment d’intérêt que le client appel un /site, à moins qu’il ne soit au courant de la structure, mais dans ce cas là, autant le rediriger vers une URL simplifiée non?
Au passage Raynor je te montre quelques lignes de mon htaccess situé dans mon dossier root /www/ sur un serveur ovh (c’est pour war-fr)
# Nom de domaine avec "www"
RewriteCond %{SERVER_NAME} !localhost
RewriteCond %{HTTP_HOST} !^www.war-fr.com$
RewriteRule ^(.*) http : //www.war-fr.com/$1 [QSA,L,R=301]
C’est le code que j’utilise pour rediriger les appels d’URL sans les “www” vers le site les contenant (soucis de pagerank)
La première condition me permet juste de ne pas appliquer la règle sur mon serveur local, car j’ai une architecture différente, et je tenais à n’avoir qu’un seul htaccess. Passons aussi sur la deuxième condition, c’est pas l’intérêt ici.
La règle s’applique bien à toutes mes urls situées dans le dossier root, et pour n’importe quelle page du dossier root, si on appel sans les “www” on sera redirigé automatiquement.
Sinon j’ai vérifié, pour les adresses coté serveur, je commence par /dossier/ sans mettre les www et je suis sous ovh comme toi.
Edité le 16/06/2008 à 16:19
Bien sûr que tu peux virer le /site, et je crois que c’est le but, non?
Et dans ce cas, une des règles données plus haut n’ira pas. Il faudra faire une règle de rewrite pour virer le /site , et continuer (donc pas de “L”), et virer la condition.
Je dois maintenant faire la même chose pour un second site (totalement indépendant du premier) contenu dans /www/patates/ (avec son dossier site et backoffice lui aussi) : je pense y arriver avec ta méthode Sans-Nom.
Si j’ai bien compris (et parce que je viens de tester ^^) le “dispatching” doit être géré par le même fichier .htaccess (et non par un second .htaccess situé dans /www/patates/).
Si tu dois enlever le / c’est parce que c’est fait par rapport au dossier où est situé ton htaccess au contraire de la conf Apache, où ça doit être absolu.
Sans-Nom > J’aurais pensé que le premier paramètre (le pattern) n’était lié qu’à la requête et non pas au système de fichier du serveur).
Concernant la possibilité d’appeler le site client via /site/ c’est bien voulu car il faut que le backoffice (enfin… surtout l’éditeur WYSIWYG TinyMCE) puisse atteindre les fichiers images situés à l’adresse http://www.domaine.tld/site/images/
Finalement tout marche bien, voici les deux rewriting :
Fichier “/www/.htaccess” :
# Vers le site Haricots (/www/site/ et /www/backoffice/)
RewriteCond %{REQUEST_URI} !/site($|/)
RewriteCond %{REQUEST_URI} !/backoffice($|/)
RewriteCond %{REQUEST_URI} !/patates($|/)
RewriteRule .* /site/$0 [L,NC,QSA,NS]
# (Désormais toute requête autre que "...site/", "...backoffice/" et "...patates/" s'est fait attrapée et dirigée vers le dossier /site/ )
Fichier “/www/patates/.htaccess” :
# Vers le site Patates (/www/patates/site/ et /www/patates/backoffice/)
RewriteCond %{REQUEST_URI} !/patates/site($|/)
RewriteCond %{REQUEST_URI} !/patates/backoffice($|/)
RewriteRule .* /patates/site/$0 [L,NC,QSA,NS]
# (Désormais toute requête autre que "...patates/site/" et "...patates/backoffice/" s'est fait attrapée et dirigée vers le dossier /patates/site/ )
Edit: Finalement ça ne fonctionne pas pour le site “patates” : les règles sont parfaites et correctes mais l’architecture du site était telle que les chemins relatifs “…/site/images/” utilisé me sortaient du site “patates” (cela n’arrive pas dans le site “haricots” car il est à la racine) : J’ai donc refait toute l’architecture du second site et cette dernière fait que je n’ai plus besoin de ruser au sujet de /backoffice/ et de /site/. Mais je suis tout de même content de cette mésaventure avec l’URL Rewriting : ça permet d’apprendre pas mal de trucs (je répête que les règles indiquées par Sans-Nom sont tout à fait exactes et utiles sauf avec mon ancienne architecture de site client/admin)
Edité le 16/06/2008 à 23:58