2009-07-23 13 views
0

Connaissances nécessaires.htaccess avec php dynamique - les problèmes de sous-dossier

Mon fichier .htaccess réoriente comme ceci: domain.com/about à domain.com/index.php?page=about~~V~~3rd

RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L] 

La "page" variable est utilisée dans un php include: dossier

<?php include_once($_SERVER['DOCUMENT_ROOT']."/contents/".$page.".html"); ?> 

Le "contenu" contient simplement des fichiers .html qui sont i NCLUS que le contenu

Ok, voici le problème:

j'ai un « sous-dossier » dans le « contenu » dossier avec les fichiers .html supplémentaires que je dois accéder Maintenant, je suis en train de rediriger comme ceci: domain.com/subfolder/about à domain.com/index.php?page=subfolder/about~~V~~singular~~3rd

cela fonctionne:

RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1 

Mais maintenant, je ne peux pas accéder au sous dossier de: domain.com/subfolder/ parce qu'il ya une page «variable

<?php $page = $_GET['page']; if(!$page) { $page = 'index'; } ?> 

Toutes les pensées, les idées, ou de l'aide serait grandement appréciée.

Merci à l'avance

Répondre

0

Vous pouvez exclure le dossier spécifique via

rewritecond %{REQUEST_URI}!^/folder1/ 
rewritecond %{REQUEST_URI}!^/folder2/ 
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1 

Edit: Link to the manual

2

Avec cela, vous ne devriez pas avoir à définir des noms de répertoire - il les règles tout en .

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/.]+/[^/.]+)/?$ index.php?page=$1 

Vous devrez peut-être tester la barre oblique de fin cependant, il peut travailler sur/sous-dossier/mais/sous-dossier

0

Il suffit de faire un autre contrôle:

if (preg_match('/^[^\\/.]+$/', $page)) { 
    $page .= '/index'; 
} 

Si $page est juste subfolder, /index serait ajouté pour avoir subfolder/index.

0
rewriteRule ^foldername/.*$ - [PT] 
rewriteRule ^foldername/.*$ - [PT] 

avant toute autre règle de réécriture ...