2009-10-14 8 views
1

Je crée une application web auto-hébergée téléchargeable (en utilisant CodeIgniter), et j'ai besoin de la règle de réécriture .htaccess pour savoir si elle se trouve dans un sous-répertoire ou ne pas pouvoir pour faire la règle de réécriture correctement.Faire une règle de réécriture .htaccess respecter automatiquement les sous-répertoires

Par exemple, si l'application est en cours d'installation à example.com, la règle d'écriture ressemblera

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

Si, d'autre part, il est installé à example.com/subdir, il ressemblera

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

Comment puis-je rendre cela possible? Existe-t-il un moyen de combiner ces éléments en une seule règle "intelligente"? Ou ai-je besoin de créer le fichier .htaccess par programmation lors de l'installation de l'application plutôt que de le regrouper avec le téléchargement?

Répondre

4

Il suffit d'utiliser un chemin relatif dans votre substitution:

RewriteCond $1 !^index\.php/ 
RewriteRule ^(.*)$ index.php/$1 [L] 
+0

Qu'est-ce que la première ligne exactement? –

+1

@mcrittenden: La condition supplémentaire est d'exclure 'index.php /' d'être réécrit pour éviter une récursion infinie. – Gumbo

0

essayer cette

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]*)$ /index.php/$1 [L] 
Questions connexes