Support » Allgemeine Fragen » Wie HTTP Statuscode 404 auf bestimmten Seiten ausgeben?

  • Gelöst strontium90

    (@strontium90)


    Ich möchte erreichen, daß bestimmte Seiten nicht mehr in Suchmaschinen indexiert werden. Dazu möchte ich einen 404 Error („File not found“) auf den betreffenden Seiten ausgeben.

    Wie geht das mit WordPress?

    Vielen Dank!

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Die einfachste Variante wäre, die betreffenden Seiten von „veröffentlicht“ auf „Entwurf“ unmzustellen, womit sie allerdings nicht nur von Suchmaschinen, sondern auch von allen anderen Webseitenbesuchern nicht mehr gefunden werden.

    Möchtest du nur die Indexierung durch Suchmaschinen verhindern, kannst du ein SEO-Plugin installieren und für jede Seite einzeln angeben, ob sie für Suchmaschinen sichtbar sein soll. Das muss nicht so ein doch eher mächtiges Plugin wie WordPress SEO (Yoast) sein, du kannst auch z.B. das schlankere The SEO Framework verwenden:

    Screenshot SEO Framework

    Noch ein Hinweis: Solche Metaangaben sind Empfehlungen, an die sich nicht alle Suchmaschinen halten.

    Thread-Starter strontium90

    (@strontium90)

    Vielen Dank für das Plugin @pixolin, habe es jetzt installiert, sieht sehr vielversprechend aus. Sowas suche ich eigentlich eh schon seit geraumer Zeit 🙂

    Aber meine Frage, wie man einen 404 Error auf einer spezifischen Seite sendet ist dadurch nicht beantwortet. Es halten sich nämlich nicht alle Suchmaschinen an den noindex-Standard, deshalb möchte ich einen 404 senden.

    Aber meine Frage, wie man einen 404 Error auf einer spezifischen Seite sendet ist dadurch nicht beantwortet.

    Das habe ich doch beantwortet: der Server gibt automatisch einen 404 aus, wenn die Webseite nicht gefunden wurde. Dazu brauchst du nur die Sichtbarkeit von „veröffentlicht“ auf „Entwurf“ setzen.

    Du kannst auch statt dessen einen Header 404 selber setzen, wie es in dieser Antwort beschrieben wird: https://wordpress.stackexchange.com/a/92176

    Sinngemäß kannst du auch das Plugin Code Snippets installieren und ein neues Snippet erstellen mit folgendem Inhalt:

    function my_event() {
      global $post;
      $page = get_page_by_title( 'Sample Page' );
      if ( $page ) {
        global $wp_query;
        $wp_query->set_404();
        status_header(404);
      }
    }
    add_action( 'wp', 'my_event' );

    Das Ergebnis ist aber das Gleiche: Weder Suchmaschinen noch Webseitenbesucher können die Seite sehen. Soll die Seite ausgegeben werden und der Header nur auf 404 gesetzt werden, reicht dieser Code:

    function my_event() {
      global $post;
      $page = get_page_by_title( 'Sample Page' );
      if ( $page ) {
        status_header(404);
      }
    }
    add_action( 'wp', 'my_event' );
    Thread-Starter strontium90

    (@strontium90)

    Soll die Seite ausgegeben werden und der Header nur auf 404 gesetzt werden, reicht dieser Code

    Sehr gut, genau das beantwortet meine Frage @pixolin.
    Und das Plugin beantwortet Fragen, die ich hier noch nicht gestellt habe 🙂

    Vielen Dank!

    Thread-Starter strontium90

    (@strontium90)

    Zu früh gefreut!

    Das Snippet

    function my_statuscode_404() {
      global $post;
      $page = get_page_by_title( 'Datenschutzvereinbarungen' );
      if ( $page ) {
        status_header(404);
      }
    }
    add_action( 'wp', 'my_statuscode_404' );

    sendet den 404 auf jeder Seite, nicht nur auf der einen einzigen.

    Was mache ich falsch?

    Thread-Starter strontium90

    (@strontium90)

    Was mache ich falsch?

    Habs gefunden, die Funktion muß heißen

    $page = get_the_title();

Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • Das Thema „Wie HTTP Statuscode 404 auf bestimmten Seiten ausgeben?“ ist für neue Antworten geschlossen.