RewriteCond seltsames Verhalten (Datei vorhanden ist-Prüfung)

Ich kann nicht verstehen, warum umleiten, hängt davon ab, RewriteRule (nicht auf RewriteCond).

Meine .htaccess:

Options +FollowSymLinks +SymLinksIfOwnerMatch

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ false.txt
</IfModule>

Root-Ordner enthält:

true.txt (enthält "true")

falsch.txt (enthält "false")

test.txt (enthält 'test')

Wenn ich versuche zu öffnen test.txt bekomme ich true und wenn ich versuche zu öffnen nonexist.txt bekomme ich true zu.

Nun ich mein .htaccess:

...
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1
...

Und jetzt wenn ich versuche zu öffnen test.txt bekomme ich test und wenn ich versuche zu öffnen nonexist.txt bekomme ich false.

UPDATE: vielen Dank für die Antworten, ich habe verstanden, wie es funktioniert, aber ein problem besteht immer noch.
Wenn ich versuchen, zu prüfen, 'wenn Datei existiert' in einem anderen Verzeichnis, es gibt immer false.

/files/test.txt

/script/.htaccess

/script/false.txt

/script/true.txt

nun meine .htaccess sieht wie

RewriteCond %{REQUEST_FILENAME} .*(true|false).*$
RewriteRule .* - [S=2]

RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt [L]

RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ false.txt [L]

Bekomme ich immer false.
Ich habe auch versucht RewriteCond ../files/%{REQUEST_FILENAME} und auch immer false Ergebnis.

Wenn ich mich bewege test.txt im script Ordner und ändern Sie dann RewriteCond %{REQUEST_FILENAME} alle funktioniert.

InformationsquelleAutor ink | 2012-07-04
Schreibe einen Kommentar