Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

Phara
Nouveau WRInaute
 
Messages: 3
Inscription: Jeu Oct 29, 2009 10:38

Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Message le Jeu Oct 29, 2009 11:00

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 :

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 !


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 495
Inscription: Jeu Oct 30, 2008 9:15

Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Message le Jeu Oct 29, 2009 14:39

si tu mets Directoryindex sans répertoire il recherche dans le répertoire courant :
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]

Phara
Nouveau WRInaute
 
Messages: 3
Inscription: Jeu Oct 29, 2009 10:38

Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Message le Jeu Oct 29, 2009 15:22

Merci pour ta réponse forty !

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.


forty
WRInaute impliqué
WRInaute impliqué
 
Messages: 495
Inscription: Jeu Oct 30, 2008 9:15

Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Message le Jeu Oct 29, 2009 16:10

alors avec :
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"

Phara
Nouveau WRInaute
 
Messages: 3
Inscription: Jeu Oct 29, 2009 10:38

Re: Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Message le Ven Oct 30, 2009 9:40

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.


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 :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités