2010-02-08 4 views
4

Je nettoie un gros fichier .htaccess contenant beaucoup d'instructions mod_rewrite.Nettoyage des instructions mod_rewrite imbriquées

La plus grande partie de l'image de fond provient des déclarations attrapant diverses occurrences de

/directory1 
/directory1/directory2 
/directory1/directory2/directory3 

utilisant des déclarations comme

RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)$ 
RewriteRule .* /front.php?level1=%1&level2=%2&%{QUERY_STRING} [L] 

RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)$ 
RewriteRule .* /front.php?level1=%1&level2=%2&level3=%3&%{QUERY_STRING} [L] 

quelqu'un pourrait-il versé avec mod_rewrite me donner un pointeur sur la façon d'écrire une déclaration universelle cela va prendre toute profondeur de directory1/directory2... et mettre la variable level appropriée dans la RewriteRule?

+0

Cette question appartient à serverfault. – FerranB

+0

Naaah, allez. Il y a des tonnes de questions liées à mod_rewrite sur SO. –

+0

Avant ou après avoir été serverfault en ligne? – FerranB

Répondre

2

utilisent plutôt la rewriterule suivante

RewriteRule ^(.*)$ front.php/$1 [L] 

et dossiers accès par pathinfo dans front.php:

$pathinfo = $_SERVER['PATH_INFO']; 

vous pouvez également activer également MultiViews dans Apache et le configurer pour utiliser front.php comme fichier d'index à la place et saisir pathinfo de la même manière.

+0

Bonne idée, et aucun problème de performance sage parce que ce qui se fait attraper par cela, sera exécuté par le script PHP, peu importe quoi. Ce sera une application construite pour fonctionner sur autant de plateformes que possible, donc je ne veux pas avoir de dépendance sur MultiViews. Ce que j'utilise maintenant c'est 'RewriteRule^dirname /(.*)$ dirname/index.php? Request = $ 1% {QUERY_STRING} [L]' A bientôt! –

Questions connexes