Vor WordPress eine statische index.html Seite vorschalten

Manchmal möchte der ein oder andere mal eine Vorschaltseite vor ein existierendes WordPress Blog schalten. Warum auch immer – soll hier egal sein.

Der aller erste Gedanke ist: mache eine index.html Datei, lege sie in das Root Verzeichnis von WordPress und schon wird die index.html statt der index.php beim / Zugriff aufgerufen. Soweit so gut!

Wer jetzt glaubt, er könne sein Blog dann ja noch mit den Aufruf der /index.php sehen, schaut dumm aus der Wäsche! Das funktioniert nämlich nur für WordPress Installationen kleiner 2.7

Bei allen neuen Versionen wird die index.php gehandhabt, dass beim Aufruf alles auf / geroutet wird. Sprich, die Startseite des Blogs ist nicht mehr erreichbar!

index.php und index.html bei WordPress parallel betreiben

„Schuld“ an dem Problem ist eine kleine aber entscheidenden Änderung in der /wp-includes/canonical.php des WordPress Core.

Dort wurde

1. $redirect['path'] = preg_replace('|/index.php/$|', '/', $redirect['path']); 

gegen folgende Zeile ausgetauscht:

2. $redirect['path'] = preg_replace('|/index.php/*?$|', '/', $redirect['path']); 

Der Grund der Änderung war:

If pretty permalinks are enabled, it can be assumed that http://site.com/index.php isn’t needed. Therefore we should redirect all index.php requests to the home URL to avoid duplicate content issues. Plus it just looks better.

Wenn Dich dies nicht stört und Du unbedingt eine index.html vor Dein Blog schalten möchtest, kannst Du also in der /wp-includes/canonical.php einfach 2.) gegen 1.) ersetzen und schon funktioniert es wieder!

Ich danke sehr ChrisThomson für diese Lösung! Hat mir sehr, sehr, sehr geholfen!

Ab jetzt musst Du das natürlich nach jedem WordPress Update immer wieder neu machen!

12 Kommentare » Schreibe einen Kommentar

  1. Hallo,

    klingt nach einer guten Lösung, allerdings wenn ich jetzt direkt eine Seite aufrufen will (www.domain.de/?page_id…) kommt immer die Startseite. Damit funktioniert auch die navigation innerhalb des Blog leider nicht mehr…
    Gibt es eine Lösung dafür?

    Danke

    Sebastian

  2. hmm…ich hielt die Bezeichnung mit der page_id immer für einen Permalink…da hab ich dann wohl was falsch verstanden…

  3. genaugenommen hast Du Recht! Die ID ist eindeutig, wobei der „sprechende Name“ nicht eindeutig sein muss, da er umgebogen werden kann.

  4. Die „Fehlerbeschreibung“ ist etwas kurz, meinst Du nicht?

  5. Aktuell ist die Änderung im Abschnitt „trailing“ zu machen:

    // trailing /index.php
    $redirect[‚path‘] = preg_replace(‚|/‘ . preg_quote( $wp_rewrite->index, ‚|‘ ) . ‚/$|‘, ‚/‘, $redirect[‚path‘]);

  6. hallo !

    ich habe das in der datei

    trailing /index.php/
    if ( !empty( $addl_path ) && $wp_rewrite->using_index_permalinks() && strpos($redirect[‚path‘], ‚/‘ . $wp_rewrite->index . ‚/‘) === false )
    $redirect[‚path‘] = trailingslashit($redirect[‚path‘]) . $wp_rewrite->index . ‚/‘;
    if ( !empty( $addl_path ) )
    $redirect[‚path‘] = trailingslashit($redirect[‚path‘]) . $addl_path;
    $redirect_url = $redirect[’scheme‘] . ‚://‘ . $redirect[‚host‘] . $redirect[‚path‘];
    }

    if ( ‚wp-register.php‘ == basename( $redirect[‚path‘] ) ) {
    if ( is_multisite() ) {
    /** This filter is documented in wp-login.php */

    wo muss was rein ?

    lg max

  7. Der WordPress Core wird so oft verändert. Ich bin da nicht mehr mitgekommen.

  8. hallo victor !

    ja es werden uns immer knüppel in den weg gelegt :-)

    ist halt voll blöd weil ich gern live sehe was ich bearbeite :-(

    lg

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.