2009-08-07 22 views
0

Meine .htaccess wie folgt aussieht:.htaccess umleiten Probleme

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] 

Problem ist, dass wenn ich www.example.com besuchen, es mir zu view.php schickt. Es gibt eine index.php Datei in meinem Stammverzeichnis. Wie bekomme ich .htaccess, um die Indexdatei zu ignorieren?

Antwort

1

Versuchen Sie, diese Regel:

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

Die wichtigen Änderungen, die ich gemacht:

  • Der reguläre Ausdruck in Ihrem ersten RewriteCond fehlerhaft ist. Der Anker $ wird nur auf die letzte Option in der Änderung angewendet. Die zweite RewriteCond Direktive ist nutzlos.
  • Die dritte RewriteCond, die auskommentiert ist, wird genau das tun, was Sie wollen: Überprüfen Sie, ob der angeforderte URI-Pfad einer vorhandenen Datei zugeordnet werden kann.
  • Der Quantifizierer wurde geändert von Null oder mehr bis ein oder mehrere Zeichen. Dadurch wird der leere URI-Pfad ausgeschlossen, wenn / angefordert wird.
+0

funktioniert super , Vielen Dank. – mrpatg

1

die # aus der vierten Zeile entfernen und den Raum zwischen dem Ausrufezeichen entfernen (!) Und die -f

RewriteCond %{REQUEST_FILENAME} !-f 

Diese Zeile sagt, dass, wenn die Datei nicht bereits auf dem Server vorhanden ist, in dieser Fall, index.php, dann fahren Sie fort und machen Sie das Neuschreiben, das folgt.

Überprüfen Sie auch, ob Sie sowohl eine DirectoryIndex als auch gegen gültige Verzeichnisse überprüfen.

DirectoryIndex index.php 

RewriteCond %{REQUEST_FILENAME} !-d 

, die Sie mit dieser sauberere Version verlassen würde:

DirectoryIndex index.php 

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

dieser ersten Sätze bis index.php als Standard-Datei. Dann führen Sie die Rewrite-Engine aus, und wenn die angeforderte Datei nicht bereits als Datei oder Verzeichnis auf dem Server vorhanden ist, werden die Dinge an die Datei view.php übergeben und ihre Magie ausgeführt.

+0

ich änderte es, aber keinen Effekt. Ich habe versucht, ein if (isset ($ picid) {} ​​else {header ('Ort: http: //website.com');}, aber es zeigt immer noch Fehler – mrpatg

+1

Sie versucht, PHP zu einer .htaccess-Datei hinzufügen? – mpen