htaccess wird neu geschrieben, wenn die umgeleitete Datei existiert

8

Das Problem: Einige HTML-Seiten von PHP-Entsprechungen (apple.html, apple.php; orange.html, orange.php), aber nicht alle tun (trauben.html).

Das Ziel: Wenn die PHP-Version existiert, überschreiben Sie sie, ansonsten behalten Sie die HTML-Version.

Ich habe:

%Vor%

Interessante Fragen:

Wenn ich nicht vor $ 1.php setze, dann lande ich mit: site.com/document/root/path (dh: site.com/home/user/www/file.php)

Wenn ich die zweite RewriteRule anrufe, bekomme ich Ссылка und es sagt mir, dass es zu viele Weiterleitungen gibt . Beachten Sie, dass es nur eine / in der zweiten http gibt.

Ich habe einige Fortschritte gemacht, ich habe RewriteBase / hinzugefügt und das / vor dem $ 1 entfernt, aber ich bekomme immer noch den zu vielen Weiterleitungsfehler (die Webseite unter site.com/page.html hat zu viele Weiterleitungen zur Folge gehabt. Wenn Sie die Cookies für diese Website löschen oder Cookies von Drittanbietern zulassen, kann das Problem möglicherweise behoben werden. Andernfalls ist dies möglicherweise ein Problem mit der Serverkonfiguration und kein Problem mit Ihrem Computer.

Es sieht so aus, als wenn ich nur HTML neu schreibe - & gt; php - & gt; html Ich bekomme den gleichen Fehler. Es sieht also so aus, als würde die Logik funktionieren, aber diese Art von Logik ist nicht erlaubt. Ich kann mir keinen anderen Weg vorstellen, um zu sehen, ob eine "PHP-Version" einer Datei existiert? Der einzige Weg, an den ich denken kann, ist etwas Ähnliches wie:

%Vor%

Leider funktioniert das nicht ganz (ich vermute, weil es drei Segmente in der Bedingungszeile hat). Ich versuche, den Dateinamen ohne die Erweiterung zu erhalten, und dann sagen, wenn filename.php eine Datei ist, schreibe page.html in page.php

    
user677285 25.03.2011, 19:10
quelle

3 Antworten

13

Sie können dies mit zwei Bedingungen erreichen:

%Vor%

Die erste Bedingung prüft, ob der Dateiname mit .html endete, und die zweite Bedingung verwendet die Rückreferenz% 1 von der ersten Bedingung, um zu überprüfen, ob die .php-Version existiert.

Ich hoffe, es hilft. :)

    
szemian 30.03.2011 03:17
quelle
1

Es tut mir leid, so spät zu antworten, aber Sie müssen die RewriteBase-Direktive hinzufügen, damit es funktioniert.

Ich hatte das gleiche Problem (mit Ihrem http: / stufff) und habe es so korrigiert:

%Vor%

Ich hoffe, es wird helfen!

    
Magikman 06.11.2012 22:06
quelle
0

Ich wollte auch alle .html-Anfragen in .php-Dateien umschreiben, aber nur wenn die .php-Datei existiert. Aber meine Variante war, dass dies nur passieren sollte, wenn die tatsächliche HTML-Datei nicht existiert.

Also nur Aufrufe von .html-Dateien, die nicht existieren, werden in .php-Datei umgeschrieben, falls sie nach diesen Regeln existieren: (Ich habe das auch auf einem lokalen XAMP-Server und auch einem Apache-Online-Server mit Erfolg getestet!)

%Vor%
  1. Es wird zuerst überprüft, ob die angeforderte Datei eine HTML-Datei ist (wir wollen nicht, dass .jpg, .css, .pdf usw. neu geschrieben werden).
  2. Es prüft, ob diese HTML-Datei nicht existiert. (Wir wollen nicht auf .php umschreiben, wenn es tatsächlich existiert.)
  3. Dann prüft es, ob eine .php-Version existiert (wir wollen nicht in eine nicht existierende .php-Datei umschreiben).
  4. Dann wird die .html in .php
  5. umgeschrieben
Wasted_Coder 25.11.2012 09:47
quelle

Tags und Links