2010-02-21 10 views
3

Je voudrais que mod_rewrite redirige toutes les demandes vers des fichiers et dossiers non existants, et toutes les demandes vers le dossier principal ("root") vers un sous-dossier. Donc, je l'ai établi comme ceci:.htaccess rediriger la racine vers le sous-dossier

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f [NC] 
RewriteCond %{REQUEST_FILENAME} !-d [NC,OR] 
RewriteCond %{REQUEST_URI}/[NC] 
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA] 

Malheureusement, cela ne fonctionne pas: si je demande example.com/public/ redirige vers mon script de traitement (si la redirection vers mon/sous-dossier/index.php ? app = public) bien que le dossier "public" existe. Notez que demander domain.com/ redirige correctement vers mon/sous-dossier/index.php

Pourquoi est-ce?

Répondre

7

cela ne fonctionne pas parce que votre dernière condition ne correspond pas seulement à la racine, mais à tout uri qui a/en elle, qui est essentiellement tout. Effectuez les opérations suivantes à la place:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d [OR] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA] 

Notez que [NC] n'est pas nécessaire que vous essayez de ne pas correspondre à des alphabets, donc « SAISIE » est pas vraiment nécessaire.

Espérons que ça aide.

+0

Pourriez-vous s'il vous plaît regarder dans http://stackoverflow.com/questions/17937873/how-to-remove-a-subdirectory-from-the-url-when-dwarding-to-sudirectory? – Starx

Questions connexes