Frage

Dies ist ein sehr seltsames Problem, und ich hoffe nur, dass ich es eindeutig erklären kann.

Im Grunde hatten wir ein großes Update auf einer Client-Seite heute und benötigen einige Rewrite-Regeln in der .htaccess zu aktualisieren, um die neue Struktur zu empfangen, etc ...

Also, wo wir hatten ursprünglich Dinge wie:

RewriteRule ^/resources/?$  index.php?id=resources
RewriteRule ^/media/?$      media.php

Wir geändert:

RewriteRule ^/resources/?$  index.php?id=resources
RewriteRule ^/media/?$      index.php?id=media

Aber wenn wir http://www.example.com/media - es wurde Anzeige die alte Medienseite. Dann, wenn wir die alte media.php aus dem Dokument Wurzel entfernt, haben wir 404s. Etwas irgendwo noch kartiert / Medien media.php -. Und ignoriert die Rewrite-Regel

Die seltsame Sache ist - alle anderen Rewrite-Regeln in der Datei arbeiten gut -. Und es gibt etwa 20 oder so da drin

Wir haben verfolgt oben und unten die vhost und andere Konfigurationsdateien, können aber keinen Hinweis auf Medien oder die andere gebrochen Umleitungen (insgesamt drei) finden - so sind wir ratlos

.
War es hilfreich?

Lösung 2

Das Deaktivieren der Option Multiviews auf der Website .htaccess das Problem behoben -. Es schien, dass dieser Inhalt Verhandlung wurde ermöglicht, die vor den Rewrite-Regeln verarbeitet wurde

Andere Tipps

Ich nehme stark an, dies zu AcceptPathInfo fällig wäre, die meiner Meinung nach ist eine Apache-Fehlfunktion. Standardmäßig glaube ich es eingeschaltet ist, wo PHP ist der Handler.

Versuchen

mit denen Sie Ihre .htaccess oder vorzugsweise httpd.conf (und neu starten):

AcceptPathInfo Off

Siehe auch: http://httpd.apache.org/docs /2.2/mod/core.html#acceptpathinfo

-

Ein paar Seitenpunkte:

Sie sollten sicherstellen, dass Ihr RewriteRules immer am Ende mit [L], wenn Sie eine Übereinstimmung gefunden haben - es bei der Fehlersuche helfen. Z.

RewriteRule ^/media/?$      index.php?id=media [L]

Auch könnten Sie die Anzahl der Regeln durch die Kombination ähnliche verringern; z.

RewriteRule ^/(media|resources)/?$  index.php?id=$1 [L]

Ich persönlich denke, die Verwendung von /? am Ende der ersten Hälfte ist nicht gut, weil es bedeutet, dass beide URLs arbeiten, ohne Umleitung, was bedeutet, dass Sie keine definitive haben, die ‚richtige‘ ist. Persönlich würde ich verwenden:

RewriteRule ^/(media|resources)/$  index.php?id=$1 [L]
RewriteRule ^/(media|resources)$ /$1/ [L,R]

Mit anderen Worten, eine einzigartige Ressource eine einzige kanonische (endgültige) URL haben sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top