2009-08-07 2 views
0

Mon .htaccess ressemble à ceci:htaccess redirect problèmes

RewriteEngine on 
RewriteCond %{REQUEST_URI} !(\.gif)|(\.jpg)|(\.png)|(\.css)|(\.js)|(\.php)|(\.swf)|(\.xpi)|(\.ico)|(\.src)$ 
RewriteCond %{REQUEST_URI} ^(.*)$ 
#RewriteCond %{REQUEST_FILENAME} ! -f 

RewriteRule (.*)$ view.php?picid=$1 [L] 

Le problème est que lorsque je visite www.example.com, il me envoie à view.php. Il y a un fichier index.php dans mon répertoire racine. Comment obtenir .htaccess pour ignorer le fichier d'index?

Répondre

1

Essayez cette règle:

RewriteCond %{REQUEST_URI} !.*\.(gif|jpg|png|css|js|php|swf|xpi|ico|src)$ [OR] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule (.+) view.php?picid=$1 [L] 

Les importants changements que je fait:

  • L'expression régulière dans votre premier RewriteCond est défectueux. L'ancre $ est uniquement appliquée à la dernière option de la modification.
  • La deuxième directive RewriteCond est inutile.
  • Le troisième RewriteCond qui a été commenté fera exactement ce que vous voulez: Vérifiez si le chemin URI demandé peut être mappé à un fichier existant.
  • A modifié le quantificateur de zéro ou plus à un ou plusieurs caractères. Cela exclura le chemin URI vide lorsque / est demandé.
+0

fonctionne très bien , Merci. – mrpatg

1

Retirez le # de la quatrième ligne et de supprimer l'espace entre le point d'exclamation (!) Et le -f

RewriteCond %{REQUEST_FILENAME} !-f 

Cette ligne indique que si le fichier n'existe pas déjà sur le serveur, dans ce cas, index.php, puis continuer et faire la réécriture qui suit.

Vérifiez également que vous disposez à la fois d'un DirectoryIndex ainsi que de vérifier les répertoires valides.

DirectoryIndex index.php 

RewriteCond %{REQUEST_FILENAME} !-d 

Ce qui vous laisse avec cette version plus propre:

DirectoryIndex index.php 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*)$ view.php?picid=$1 [L] 

Cette première met en place index.php que le fichier par défaut. Ensuite, vous exécutez le moteur de réécriture, et si le fichier demandé n'existe pas déjà sur le serveur comme un fichier ou un répertoire, passera les choses sur le fichier view.php et exécuter sa magie.

+0

Je l'ai changé mais aucun effet. J'ai essayé d'ajouter un if (isset ($ picid) {} ​​else {header ('Emplacement: http: //website.com');} mais il montre toujours l'erreur – mrpatg

+1

Vous avez essayé d'ajouter php à un fichier .htaccess? – mpen