Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
5 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
Bonjour à tous,
Je fais appel à vos connaissances car je bloque sur un petit soucis d'htaccess que je n'arrive pas à solutionner.
J'ai un vhost dans ma configuration d'Apache avec 3 alias différents qui pointent sur un même dossier :
J'ai des fichiers communs pour les trois sites qui se trouvent à la racine de "C:/www/dossier2/", les pages spécifiques à chaque site se trouvent dans les dossiers "C:/www/dossier2/site1", "C:/www/dossier2/site2" et "C:/www/dossier2/site3".
Dans le .htaccess qui se trouve à racine de "C:/www/dossier2/" je voudrais pouvoir attribuer un RewriteBase et DirectoryIndex différent suivant l'alias utilisé, j'ai donc essayé quelque chose comme ca :
Le soucis c'est que le flag SKIP ne saute pas les directives RewriteBase et DirectoryIndex, uniquement les directives RewriteRule, du coup ce sont les premières occurrences de RewriteBase et DirectoryIndex pour le "site1" qui s'appliquent aux trois autres.
D'où ma question : Sauriez-vous comment je peux attribuer dans un fichier .htaccess différentes directives RewriteBase et DirectoryIndex suivant l'alias utilisé dans un vhost ?
Merci d'avance !
Je fais appel à vos connaissances car je bloque sur un petit soucis d'htaccess que je n'arrive pas à solutionner.
J'ai un vhost dans ma configuration d'Apache avec 3 alias différents qui pointent sur un même dossier :
- Code: Tout sélectionner
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.monsite.com
ServerAlias monsite.com *.monsite.com
DocumentRoot "C:/www/dossier1/"
Alias /site1/ "C:/www/dossier2/"
Alias /site2/ "C:/www/dossier2/"
Alias /site3/ "C:/www/dossier2/"
</VirtualHost>
J'ai des fichiers communs pour les trois sites qui se trouvent à la racine de "C:/www/dossier2/", les pages spécifiques à chaque site se trouvent dans les dossiers "C:/www/dossier2/site1", "C:/www/dossier2/site2" et "C:/www/dossier2/site3".
Dans le .htaccess qui se trouve à racine de "C:/www/dossier2/" je voudrais pouvoir attribuer un RewriteBase et DirectoryIndex différent suivant l'alias utilisé, j'ai donc essayé quelque chose comme ca :
- Code: Tout sélectionner
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/site1/
RewriteRule (.*) - [S=20]
RewriteBase /site1/
DirectoryIndex site1/index.php
RewriteRule ^page/$ site1/page.php [L]
...
...
RewriteRule ^page18/$ site1/page18.php [L]
RewriteCond %{REQUEST_URI} !^/site2/
RewriteRule (.*) - [S=20]
RewriteBase /site2/
DirectoryIndex site2/index.php
RewriteRule ^page/$ site2/page.php [L]
...
...
RewriteRule ^page18/$ site2/page18.php [L]
RewriteCond %{REQUEST_URI} !^/site3/
RewriteRule (.*) - [S=20]
RewriteBase /site3/
DirectoryIndex site3/index.php
RewriteRule ^page/$ site3/page.php [L]
...
...
RewriteRule ^page18/$ site3/page18.php [L]
Le soucis c'est que le flag SKIP ne saute pas les directives RewriteBase et DirectoryIndex, uniquement les directives RewriteRule, du coup ce sont les premières occurrences de RewriteBase et DirectoryIndex pour le "site1" qui s'appliquent aux trois autres.
D'où ma question : Sauriez-vous comment je peux attribuer dans un fichier .htaccess différentes directives RewriteBase et DirectoryIndex suivant l'alias utilisé dans un vhost ?
Merci d'avance !
Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
si tu mets Directoryindex sans répertoire il recherche dans le répertoire courant :
RewriteBase est inutile normalement si tu mets le chemin complet depuis la racine :
tu peux peut-être même mettre en une seule ligne toutes tes pageXX :
- Code: Tout sélectionner
DirectoryIndex index.php
RewriteBase est inutile normalement si tu mets le chemin complet depuis la racine :
- Code: Tout sélectionner
RewriteRule ^site1/page/$ /site1/page.php [L]
...
...
RewriteRule ^page18/$ site1/page18.php [L]
tu peux peut-être même mettre en une seule ligne toutes tes pageXX :
- Code: Tout sélectionner
RewriteRule ^site1/page([0-9]*)/$ /site1/page$1.php [L]
Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
Merci pour ta réponse forty !
Oui effectivement mais dans ce cas si j'accède à http://www.monsite.com/site1/ je vais avoir l'index qui se trouve dans "C:/www/dossier2/" alors que je veux accéder à celui qui se trouve dans "C:/www/dossier2/site1/", même chose pour le "site2" et "site3" vu que l'alias pointe sur le même dossier.
Malheureusement cela ne fonctionne pas dans le cas d'un alias, il faut indiquer l'URL réelle avec RewriteBase.
Citation tirée de la doc d'apache concernant la directive RewriteBase :
oui c'est vrai mais là c'était juste pour l'exemple, chaque page a un nom différent dans mon .htaccess.
forty a écrit:si tu mets Directoryindex sans répertoire il recherche dans le répertoire courant :
- Code: Tout sélectionner
DirectoryIndex index.php
Oui effectivement mais dans ce cas si j'accède à http://www.monsite.com/site1/ je vais avoir l'index qui se trouve dans "C:/www/dossier2/" alors que je veux accéder à celui qui se trouve dans "C:/www/dossier2/site1/", même chose pour le "site2" et "site3" vu que l'alias pointe sur le même dossier.
forty a écrit:RewriteBase est inutile normalement si tu mets le chemin complet depuis la racine :
- Code: Tout sélectionner
RewriteRule ^site1/page/$ /site1/page.php [L]
Malheureusement cela ne fonctionne pas dans le cas d'un alias, il faut indiquer l'URL réelle avec RewriteBase.
Citation tirée de la doc d'apache concernant la directive RewriteBase :
If your webserver's URLs are not directly related to physical file paths, you will need to use RewriteBase in every .htaccess file where you want to use RewriteRule directives.
forty a écrit:tu peux peut-être même mettre en une seule ligne toutes tes pageXX :
- Code: Tout sélectionner
RewriteRule ^site1/page([0-9]*)/$ /site1/page$1.php [L]
oui c'est vrai mais là c'était juste pour l'exemple, chaque page a un nom différent dans mon .htaccess.
Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
alors avec :
c'est pas l'alias qui est faux plutôt?
- Code: Tout sélectionner
RewriteRule ^site1/page/$ /dossier2/site1/page.php [L]
c'est pas l'alias qui est faux plutôt?
- Code: Tout sélectionner
Alias /site1 "C:/www/dossier2/site1"
Alias /site2 "C:/www/dossier2/site2"
Alias /site3 "C:/www/dossier2/site3"
Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?
forty a écrit:alors avec :
- Code: Tout sélectionner
RewriteRule ^site1/page/$ /dossier2/site1/page.php [L]
non cela ne marche pas non plus, j'obtiens une erreur 404. RewriteBase semble obligatoire dans mon cas de figure.
forty a écrit:c'est pas l'alias qui est faux plutôt?
- Code: Tout sélectionner
Alias /site1 "C:/www/dossier2/site1"
Alias /site2 "C:/www/dossier2/site2"
Alias /site3 "C:/www/dossier2/site3"
Non les alias ne sont pas faux, mais peut-être pas adapté pour ce que je veux faire.
Le problème si je mets les alias que tu me donnes est que je ne pourrais plus accéder aux fichiers communs qui se trouvent à la racine de "C:/www/dossier2/" car si je tente d'accéder au dossier parent d'un de mes alias je vais tomber sur le DocumentRoot de mon vhost qui pointe sur "C:/www/dossier1/".
En créant un quatrième alias pointant sur "C:/www/dossier2/" je vais peut-être pouvoir m'en sortir mais j'aurais vraiment aimé éviter cela pour ne pas compliquer la chose.
5 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Article sur le fichier .htaccess
- Suite de l'article sur le fichier .htaccess : l'URL rewriting
- Robots.txt : Yahoo supporte les options avancées
- Comment éviter les contenus dupliqués (avec/sans le www)
- 3ème partie de l'article .htaccess : les réécritures conditionnelles
- Tutoriel complet sur les redirections (301, 302, JavaScript, ...)
- Aperçu des différents types de redirection
- L'URL Rewriting expliqué aux débutants
- La classe C de l'adresse IP
Cet outil vous permet de vérifier si plusieurs sites sont hébergés sur la même classe C (adresse IP du serveur).
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum