it-swarm.com.de

Meine Permalinks sind kaputt! Kann ich mod_rewrite verwenden, um eine physische Datei zu ignorieren?

Eine Website, an der ich arbeite, hat kürzlich eine Datei mit dem Namen "2011.html" im Stammverzeichnis ihrer Website veröffentlicht. Jetzt funktionieren keine 2011-Blog-Posts mit der Permalink-Struktur Jahr/Monat/Tag/Post-Name mehr und laden stattdessen die 2011.html-Datei. Beim Versuch, das Archiv unter domain.com/2011/ aufzurufen, wird die Datei ebenfalls fälschlicherweise aufgerufen. 2010 und andere Jahre funktionieren wie erwartet.

Kann ich mod_rewrite verwenden, um diese Datei nur zu bestätigen, wenn 2011.html explizit in der URL enthalten ist, und die Standard-Permalink-Struktur mit jeder anderen URL verwenden, damit die Blog-Funktionalität wiederhergestellt wird?

Der Link zu dieser Datei wurde in einer Marketing-E-Mail verschickt und ist sehr aktiv, sodass sie nicht verschoben oder umbenannt werden kann.

4
Nate Dudek

Der Grund, der überhaupt passiert, ist die Inhaltsverhandlung . /2011.html wäre normalerweise nicht über /2011/ zugänglich, aber bei der Inhaltsaushandlung sucht Apache automatisch nach Dateien mit dem Namen 2011 (unabhängig von der Erweiterung), wenn der Ordner nicht gefunden wird, bevor die Steuerung an WordPress übergeben wird.

Dies kann sehr nützlich sein, aber wenn Sie keine besondere Inhaltsaushandlung benötigen (WordPress selbst benötigt sie nicht), können Sie sie deaktivieren, indem Sie dies zu Ihrem .htaccess hinzufügen:

Options -MultiViews

Wenn dies nicht funktioniert oder Sie eine Inhaltsaushandlung benötigen, können Sie den 2011.html in etwas anderes umbenennen und mit mod_rewrite sicherstellen, dass der Link weiterhin funktioniert. Z.B. benenne 2011.html in happynewyear.html um und füge dies dann zu deinem .htaccess hinzu (vor den anderen RewriteRules):

RewriteRule ^2011\.html happynewyear.html [L]
10
user2370

Ja, genau dafür wurde mod_rewrite entwickelt. Sie müssen den Blog-Inhalt jedoch an einen anderen Ort verschieben.

Wenn zum Beispiel /2011/11/1/how-to-brew-beer.html einer der Blog-Artikel war, ist er dort nicht mehr verfügbar, da dies nun ein fehlerhafter Link ist. Also musst du es woanders hin verschieben:

   /2011_good/11/1/how-to-brew-beer.html

Ihre Umschreiberegel muss mit allem übereinstimmen, das mit /2011/.* beginnt, und sie muss mit der URL, die ich oben angegeben habe, umgeschrieben werden, vorausgesetzt, dies ist der Ort, an den die Artikel verschoben wurden.

Das Verschieben des Inhalts kann sich als viel Arbeit herausstellen. Ich denke, Sie sind viel besser dran, wenn Sie die 2011.html-Datei an einen anderen Ort verschieben und dann eine Umschreiberegel dafür verwenden, da es sich nur um eine Datei handelt . im Gegensatz zu historischen Informationen.

Natürlich sind wir jetzt 7 Tage in 2011, also kann ich mir nicht vorstellen, dass es so viele Posts für 2011 gibt :)

0
jmort253