2009-10-06 11 views
1

. Le fichier .htaccess ne fonctionnait pas comme prévu

Nous avons un fichier .htaccess qui est configuré pour rediriger certains fichiers vers un script PHP. Maintenant, nous ajoutons des fichiers durs que nous voulons contourner cette redirection. Jusqu'à présent, cela ne semble pas fonctionner et nous sommes perplexes.

Ci-dessous notre contenu du fichier .htaccess initial après le démarrage du moteur, qui travaille pour une autre application déjà:

RewriteCond 1 $^(index.php | robots.txt | favicon.ico)

(. *)

RewriteRule^/index.php/$1 $ [l]

nous essayons de charger des fichiers depuis /répertoire/ nous avons donc essayé d'ajouter chacun de ces derniers à la section RewriteCond:

RewriteCond% {REQUEST_URI} annuaire

RewriteCond 1 $ ^! (Index.php | i/| robots.txt | favicon.ico | annuaire)

Ni semble fonctionner . Des idées sur la façon de charger ceci?

Exemples:

Si redirect

http://site.com/thisredirects/

ne doit rediriger

http://site.com/directory

http://site.com/directory/

http://site.com/directory/index.php

etc.

Répondre

0

avez-vous essayé de faire un second fichier .htaccess dans le répertoire/dir et de faire une NoRewrite en elle?

1

Essayez ceci:

Wont redirect

RewriteRule directory/.* - [L] 

Redirects

RewriteRule ^$ thisredirects/ [L] 
RewriteRule (.*) thisredirects/$1 [L] 
0

Il semble que vous souhaitez rediriger tout ce qui est pas réellement un fichier existant dans votre docroot à votre index. php.Ce petit peu de réécriture doit gérer que:

RewriteCond %{REQUEST_FILENAME} -s [OR] # file with size 
RewriteCond %{REQUEST_FILENAME} -l [OR] # file is a link 
RewriteCond %{REQUEST_FILENAME} -d  # file is a directory 
RewriteRule ^.*$ - [NC,L]    # don't rewrite [last rule] 
RewriteRule ^(.*)$ /index.php/$1 [NC,L]  # everything else gets sent to index.php 

L'opérateur [OR] peut être ce que vous cherchez sur le RewriteCond ainsi.

Aussi, si vous voulez juste la whitelist/partie de répertoire que vous pouvez mettre une règle avant votre réoriente qui est marqué [L] pour « dernière règle »

RewriteRule ^/directory.*$ - [NC,L] 
Questions connexes