Permalinks & Pingback-Problem

  • Hoi Folks,

    Permalinks sind wie folgt eingestellt:

    Code
    /index.php/%year%/%monthnum%/%day%/%postname%/

    Problem: Pingbacks funktionieren nicht, Trackbacks schon.

    Hat jemand einen Verdacht, woran es liegen könnte. Style- und Plugin-Probleme habe ich bereits ausgeschlossen, stelle ich die Permalinks auf Standard ist alles okay.

    Für mich im Prinzip nicht so problematisch, allerdings finde ich das nicht fair anderen Blogs gegenüber, bei denen mein Pingback durchkommt, bei mir aber nichts ankommt.

    LG

    Chris

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Zitat von Chris_

    Hoi Folks,

    Permalinks sind wie folgt eingestellt:

    Code
    /index.php/%year%/%monthnum%/%day%/%postname%/

    das mit /index.php... ist nur eine notlösung. richtige permalinks sehen so aus

    Code
    /%year%/%monthnum%/%day%/%postname%/

    . du wirst aber irgendeinengrund gehabt haben das so eingestellt haben ..vielleicht liegt es an dieser lösung ( kann ich dir leider nicht genau sagen)

  • Die einzige Permalink-Lösung, die ohne mod_rewrite funktioniert. mod_rewrite ist nunmal auf unserem Server deaktiviert.

    Da WP eben auch diese Notlösung anbiete, hoffe ich doch, dass es da eine Lösung gibt?!? :)

    Chris

  • naja ich nehm ein der alte treue Indianer (Apache der Server) versteht eben dieses neumoderne Zeuchs ohne index.php nicht,

    davon kann ich mehr als ein Lied singen ;)

    ich sah auf Deinem Blog trackbacks,

    jetzt beginne ich zu fragen:
    was verstehst Du unter:
    permalinks auf *standard* setzen, dann funktioniert es

    wieso sollte Dich jemand anpingen , wenn er keinen Link in seinem Artikel zu Dir setzt?

    also all diese Pings ohne Link im Artikel nimmt Spam Karma 2 bei mir nicht an,
    lg

  • Hi Chris
    ich habe genau das gleiche Problem und wollte gerade hier posten.
    ich muss auch die "Notlösung" mit der index.php/archiv/hastenichgesehen/... Permalinkstruktur benutzen, da mod_rewrite auf meinem Webspace nicht aktiviert ist.
    Genau wie bei Dir gehen Trackbacks, aber keine Pingbacks.
    Ich möchte jetzt ungern wieder umsteigen auf die ?p=1234 Syntax, zumal ich nicht verstehe, wieso Trackbacks in den Kommentaren erscheinen, aber Pingbacks nicht.
    Gruss
    Tom

  • Ich habe gestern noch ein bisschen rumrecherchiert.
    Diese "Notlösung" für die Permalinks ist durchaus nicht unüblich, es wird auf der Wordpress Codex Seite sogar ausdrücklich darauf hingewiesen, dass es eine Methode ist, "nice" URLs zu erzeugen, ohne mit mod_rewrite und der .htaccess zu arbeiten (http://codex.wordpress.org/Using_Permalinks). Wenn also ein Dateiname am Anfang der Permalinkstruktur angegeben wird (in unserem Fall also die index.php), dann versucht Wordpress, die Struktur die hintennachfolgt, an diese Datei zu übergeben und durch irgendwelchen Voodoo werden die gewünschten Seiten angezeigt. Aus irgendeinem Grund funktionieren Trachbacks, wahrscheinlich, weil hier explizit eine andere Datei "gerufen" wird

    Code
    /index.php/archiv/tollertitel/trackback/

    )Also ohne es technisch oder gar programmiermässig erklären zu können, ich habe den Verdacht, dass die Angabe des link rel="pingback" bzw die dort angegebe Datei

    Code
    /xmlrpc.php

    Probleme macht.
    Alle anderen Angaben zu Feed oder Trackback werden nämlich in der Form

    Code
    /index.php/feed/

    oder

    Code
    /index.php/trackback/

    gemacht.
    Ich werde bei mir jetzt einfach mal die rel=pingback entsprechend umstellen und versuchen, von einem anderen Blog einen Pingback auszulösen.
    Bis gleich,
    gruss
    Tom

  • Mööp.
    Das wäre ja auch zu einfach gewesen. Umstellen auf

    Code
    /index.php/xmlrpc/

    in der link rel="pingback" bringt garnichts.
    Also denke ich ist das Problem die xmlrpc.php selbst. Genauso, wie die index.php anscheinend in der Lage ist, anhand der Permalinkstruktur intern den richtigen Beitrag zu finden, müsste die xmlrpc.php das auch tun, damit der Pingback in den Kommentaren des gepingten Artikels erscheint. Anscheinend stolpert sie aber, da sie (achtung, reine Mutmaßung) entweder eine "echte" Rewrite-URL erwartet in der Form blogadresse/irgendwas/ oder eine index.php mit query-string (mit fragezeichen und so; ?p=123).
    Der "Zwitter" /index.php/archiv/tollertitel/ wird offenbar nicht berücksichtigt.

    gruss
    Tom

  • Zitat von Monika

    was verstehst Du unter:
    permalinks auf *standard* setzen, dann funktioniert es

    Hi Monika,
    im Backend unter Optionen -> Permalinks gibt es mehrere Select-Buttons, einer davon lautet "standard" und der dazugehörige Permalink sieht dann so aus:

    Code
    http://www.domainname.tld/wordpressverzeichnis/?p=123


    Mit diesen Permalinks klappen die Pingbacks. Stellt man die Permalinks auf "Benutzerdefiniert" und verwendet

    Code
    /index.php/%year%/%monthnum%/%day%/%postname%/

    dann gehen die Pingbacks nicht.

  • So und weiter gehts mit dem Selbstgespräch.

    Ich habe in der xmlrpc.php mal das Logging aktiviert, und von einem befreundeten Blog einen Ping losgeschickt auf meinen Eintrag.
    Im Log steht nun das hier:

    Code
    2006-06-18 12:06:52  Input: <?xml version="1.0"?>
    <methodCall>
    <methodName>pingback.ping</methodName>
    <params>
    <param><value><string>http://www.fcbui.net/fcblog/?p=88</string></value></param>
    <param><value><string>http://www.webrocker.de/blog/index.php/2006/06/18/pingback-trackback-scheissdreck/</string></value></param>
    </params></methodCall>
    
    
    2006-06-18 12:06:52  Output: (PB) URI='http://www.webrocker.de/blog/index.php/2006/06/18/pingback-trackback-scheissdreck/' ID='2006' Found='from the path'

    Der Ping kommt also richtig an, wird aber innerhalb der xmlrpc.php falsch "zerpflückt". Der Eintrag, unter dem dieser Ping erscheinen würde, wäre der mit der ID 2006 - offenbar "findet" die xmlrpc.php die Jahreszahl im Permalink und interpretiert diese als Beitrags-ID.
    :-(

    Irgendwas läuft an dieser Stelle hier schief (zeile 1124ff in der xmlrpc.php):

    PHP
    } elseif (preg_match('#p/[0-9]{1,}#', $urltest['path'], $match)) {
                // the path defines the post_ID (archives/p/XXXX)
                $blah = explode('/', $match[0]);
                $post_ID = $blah[1];
                $way = 'from the path';

    Ich bin leider nicht so fit in RegEx Zeug... aber kann es sein, dass

    Code
    '#p/[0-9]{1,}#'

    auch auf 'index.php/2006/...' greift? Weil das letzte p von .php gefolgt von einem / und dann einer Ziffer genau der obigen Bedingung entsprechen würde.

  • Sorry Leute, hab hier gerade jetzt erst ne Antwort-Mail von vBulletin bekommen. Argh...

    Da habe ich ja jetzt ne Menge nachzulesen...

    Ich melde mich in einer halben Stunde noch mal. :)

    Chris

  • Erstmal Monika abfrühstücken... *g*

    Zitat von Monika

    naja ich nehm ein der alte treue Indianer (Apache der Server) versteht eben dieses neumoderne Zeuchs ohne index.php nicht,

    davon kann ich mehr als ein Lied singen ;)

    ich sah auf Deinem Blog trackbacks,

    Jupp, Trackbacks sind ja auch was anderes.

    Zitat von Monika

    jetzt beginne ich zu fragen:
    was verstehst Du unter:
    permalinks auf *standard* setzen, dann funktioniert es

    Wie Webrocker schon sagte: Artikel-URL: ... /?p=123

    Zitat von Monika

    wieso sollte Dich jemand anpingen , wenn er keinen Link in seinem Artikel zu Dir setzt?

    also all diese Pings ohne Link im Artikel nimmt Spam Karma 2 bei mir nicht an,
    lg

    Genau da ist das Problem. Wenn mich jemand verlinkt, kommt kein Ping an - erst wenn meine URL explizit im ACP unter Trackbacks eingetragen wird, erst dann kommt ein Trackback an, werde ich "nur" verlinkt, kommt eben kein Pingback an. :D

    Ich hoffe, ich hab mich jetzt klarer ausgedrückt. :)

    Webrocker:

    Super, nur verstehe ich kaum was davon. Vielleicht kommt ja noch ein Profi dazu. Aber Danke für Deinen Einsatz. :)

    LG

    Chris

  • Ich komme mit der Datei gar nicht klar. Was mich allerdings wundert, dass das Problem bisher noch niemandem aufgefallen ist, oder nur bei uns auftritt, ich gehe aber erstmal bis zum Beweis des Gegenteils von ersteren aus. :D

    Schönen Sonntag Dir noch. :)

    Chris

  • Um den Profis die Arbeit etwas zu erleichtern...
    es gibt zwei Funktionen, die (anscheinend) damit zu tun haben.

    Die eine lebt in /wp-includes/functions.php Zeile 178ff:


    Die andere wohnt in der xmlrpc.php selbst, Zeile 1083ff:


    Wenn ich das richtig interpretiere, müsste eine url wie

    Code
    http://www.domain.tld/wp/index.php/2006/03/10/mein-toller-titel/

    Im unteren Bereich der xmlrpc Funktion landen, dort, wo die DB-Query mit dem "RLIKE $title" steht.
    Aber irgendwas geht da schief.

  • Ok, ich habe den Fehler gefunden, bzw eingekreist.

    Der Abschnitt mit "index.php/" in der functions.php, Zeile 216

    PHP
    // Strip 'index.php/' if we're not using path info permalinks
        if ( false === strpos($rewrite, 'index.php/') )
           $url = str_replace('index.php/', '', $url);


    ist der Bösewicht. Wenn ich die beiden Zeilen auskommentiere, klappt es mit den Pingbacks.

    Anscheinend ist die if-Abfrage fehlerhaft, sodass *immer* das index.php aus dem zu checkenden url-String entfernt wird.

  • Zitat von Chris_

    oder kann man sie auskommentieren?


    Ich habe es bei mir jetzt mal auskommentiert. Mal schauen, ob alles so funktioniert, wie bisher.

    Vielleicht hat jemand von PHP mehr Ahnung als ich und kann die if-Abfrage richtig machen. Die Idee dahinter ist ja richtig, nur ist das

    PHP
    $rewrite

    kein String, sondern ein (indiziertes) Array:


    Der check in der if-Abfrage müsste also auf die keys in diesem Array gehen, evtl genügt ein check auf den ersten Key, ob dieser "index.php/" enthält.
    Also, bitte jemand mit php-Ahnung hier einsteigen.

    Falls wir hier einen echten Bug gefunden haben, wie erfahren die WP-Entwickler davon?

    Gruss
    Tom

  • Zitat von Webrocker

    Der check in der if-Abfrage müsste also auf die keys in diesem Array gehen, evtl genügt ein check auf den ersten Key, ob dieser "index.php/" enthält.


    So, muss man denn alles selbst machen.... :D.
    Anstelle von

    PHP
    if ( false === strpos($rewrite, 'index.php/') )

    habe ich jetzt

    PHP
    if ( false === strpos(key($rewrite), 'index.php/') )

    stehen, und Pingbacks kommen an. Damit wird geprüft, ob im ersten Key des rewrite-rules Arrays "index.php/" vorkommt, wenn nicht, wird "index.php/" wie zuvor entfernt. Wenn man es ganz genau nimmt, müsste man das rewrite-rules Array durchnudeln, und schauen, ob in irgendeinem Key das "index.php/" steht. Da aber wie oben zu sehen ist, in jeder Zeile des Arrays das "index.php/" vorkommt, genügt es, nur in der ersten zu schauen. Denke ich mal.

  • Es ist zum Mäuse melken... Bei mir funktioniert es weder mit Änderung der Coezeile noch mit Auskommentieren beider Zeilen...

    Naja, kann man wohl nichts machen...

    Chris

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!