.htaccess con php dinamico – problemi di sottocartella

Conoscenza necessaria

Il mio file .htaccess reindirizza in questo modo: domain.com/about a domain.com/index.php?page=about

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

La variabile "pagina" è usata in un php include:

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

La cartella "contenuti" contiene semplicemente file .html inclusi come contenuto

Ok ecco il problema:

    Ho una "sottocartella" nella cartella "contenuti" con ulteriori file .html che devo accedere Ora sto cercando di redirect in questo modo: domain.com/subfolder/about a domain.com/index.php?page= sottocartella / su

    Questo funziona:

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

    Ma ora non posso accedere alla sottocartella da: domain.com/subfolder/ perché esiste una variabile 'pagina'

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

    Qualsiasi pensiero, idea o aiuto sarebbe molto apprezzato.

    Grazie in anticipo

    Con questo, non dovresti definire alcun nome di directory – li esclude tutti.

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

    Potrebbe essere necessario testare la barra finale, ma potrebbe funzionare su / sottocartella / ma non / sottocartella

    È ansible escludere una cartella specifica tramite

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

    Modifica: collegamento al manuale

    Basta fare un altro controllo:

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

    Se $page è solo una subfolder , /index sarà aggiunto alla subfolder/index .

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

    prima di qualsiasi altra regola di riscrittura …