fichier .htaccess édition


3

je l'ai fait une application à l'aide CodeIgniter, et j'ai essayé d'utiliser les règles mod_rewrite apache comme indiqué sur la CodeIgniter User Guide comme suit:

RewriteEngine on

RewriteCond $1 !^(index\.php|images|robots\.txt)

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

Le problème est que j'ai cette application dans un pli er abc/, mais quand je tape mysite/abc/something (qui devrait pointer vers mysite/abc/index.php/something) je suis redirigé vers mysite/index.php/something.

Quels changements dois-je apporter au fichier .htaccess pour le faire fonctionner correctement?

1

Essayez d'utiliser un chemin relatif à la substitution:

RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ index.php/$1 [L] 

3
RewriteCond $1 !(index\.php|^images|^robots\.txt) 
RewriteRule (.*) index.php/$1 [L,NS] 
  0

ne vous oubliez le '^' ou est-ce comme ça? d'ailleurs que fait [L, NS]? 22 févr.. 092009-02-22 12:34:00

  0

J'ai enlevé le^initial sur le RewriteCond afin qu'il ignore n'importe quel index.php dans votre site, pas simplement /index.php (^ index.php ne correspondra pas /abc/index.php; il est dans un .htaccess dans un sous-répertoire ne fait pas les chemins relatifs à ce sous-répertoire). Le^et le $ dans la règle n'étaient pas pertinents. 22 févr.. 092009-02-22 12:50:09

  0

Le NS supprime la règle sur les sous-requêtes. Lorsque la règle se déclenche, une sous-requête est générée avec index.php/whatever comme URL; le NS empêche la règle de regarder la sous-requête. La vérification de index.php de RewriteCond devrait également empêcher que cela soit réécrit, donc c'est un peu ceinture-et-bretelles. 22 févr.. 092009-02-22 12:52:41