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
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. :)
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%