Plusieurs directives RewriteBase et DirectoryIndex dans un .htaccess ?

Discussion dans 'URL Rewriting et .htaccess' créé par Phara, 29 Octobre 2009.

Tags:
  1. Phara
    Phara Nouveau WRInaute
    Inscrit:
    29 Octobre 2009
    Messages:
    5
    J'aime reçus:
    0
    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:
    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:
    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 !
     
  2. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    si tu mets Directoryindex sans répertoire il recherche dans le répertoire courant :
    Code:
    DirectoryIndex index.php
    RewriteBase est inutile normalement si tu mets le chemin complet depuis la racine :
    Code:
    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:
    RewriteRule ^site1/page([0-9]*)/$ /site1/page$1.php [L]
     
  3. Phara
    Phara Nouveau WRInaute
    Inscrit:
    29 Octobre 2009
    Messages:
    5
    J'aime reçus:
    0
    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.
     
  4. forty
    forty WRInaute passionné
    Inscrit:
    30 Octobre 2008
    Messages:
    1 929
    J'aime reçus:
    0
    alors avec :
    Code:
    RewriteRule ^site1/page/$ /dossier2/site1/page.php [L]
    c'est pas l'alias qui est faux plutôt?
    Code:
    Alias /site1 "C:/www/dossier2/site1"
    Alias /site2 "C:/www/dossier2/site2"
    Alias /site3 "C:/www/dossier2/site3"
     
  5. Phara
    Phara Nouveau WRInaute
    Inscrit:
    29 Octobre 2009
    Messages:
    5
    J'aime reçus:
    0
    non cela ne marche pas non plus, j'obtiens une erreur 404. RewriteBase semble obligatoire dans mon cas de figure.

    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.
     
Chargement...
Similar Threads - directives RewriteBase DirectoryIndex Forum Date
Gestion de cookies problème directives CNIL. Administration d'un site Web 15 Novembre 2019
Nouvelles directives de la CNIL (cookies et traceurs) Droit du web (juridique, fiscalité...) 2 Septembre 2019
Nouvelles directives européennes le ecommerce en PERIL !! e-commerce 31 Mars 2011
Directives .htaccess Administration d'un site Web 8 Mars 2010
Eviter un RewriteBase URL Rewriting et .htaccess 30 Novembre 2012
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice