Permanent Link auflösen

  • Hi,

    ich hab' als Linkstrutkur 2007/07/13/perma-aufloesen eingestellt.
    Wenn ich ein Permalink in den Browser eintippe, wie wird der Link dann aufgelöst, damit über die post_ID der Content ermittelt werden kann?


    Gruß

    • 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



  • die ID wird von der Datenbank an den Link gehängt

    mod_rewrite das Apachemodul wandelt dies dann um


    Admincenter==>Verwalten==>Dateien==>htaccess

    dort findest du es


    lg

  • erstmal danke für deine schnelle Antwort - hat schonmal fürs Grundverständnis geholfen :)

    die ID wird von der Datenbank an den Link gehängt

    wenn die Seite direkt über einen Deeplink aufgerufen wird, dann kann die DB ja nichts dranhängen, oder?
    Das Ganze wird dann also "nur" über mod_rewrite aufgelöst...

    Wenn ich die eingegebene URL jetzt mit Javascript abfrage, welchen Wert bekommt dann Javascript gelierfert? Die SEO aufbereitete URL oder was kryptisches? :)

    Versteh den Hintergrund noch nicht so ganz, somit auch kein wirkliches Transferdenken gerade :-|

  • JS bekommt die aufbereitete URL, denn JS ist clientseitig und bekommt nur die "geparste" serverseitige Antwort, nichts dazwischen. Mit JS kannst du keine Serverwerte abfragen bzw verändern.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • klingt logisch :)

    also besteht keine Möglichkeit die URL die mod_rewrite ausspuckt clientseitig irgendwie dran zu kommen?
    Kann ich mod_rewrite aus einer PHP aufrufen, so dass ich clientseitig die PHP aufrufe und die mir eine umgewandelte URL zurückliefert?

  • Genau genommen gibt es keine echte, umgewandelte URL. Die Rewrite Rules bei Wordpress sehen so aus:

    Apache Configuration
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    Das heißt, wenn die angeforderte URL weder auf eine real existierende Date (!-f) oder auf ein real existierendes Verzeichnis (!-d) zeigt, dann wird die URL auf die index.php umgelenkt. Die umgelenkte URL sieht dann beispielsweise so aus:
    domain/index.php/2007/07/16/Mein-Beitrag

    Das dann daraus die Postid bestimmt wird und weche Seite konkret angezeigt wird, dass ist alles wieder Wordpress-Intern und hat mit mod_rewrite nichts zu tun.

    Was genau willst du eigentlich machen, dann kann man dir vielleicht besser helfen.

  • da ich grad viel Zeit habe :) wollt ich mich mal dran machen und WP mit einem Flash-Frontend basteln.

    Wenn jetzt deine SEO-freundliche URL eingegeben wird, dann wird die URL per JS (SWFAdress heisst das Modul) erkannt, Flash verarbeitet die Eingabe und kann dann vom Server über ein AMFPHP-Gateway Daten anfordern.

    Nehmem wir mal dein Bsp "domain/index.php/2007/07/16/Mein-Beitrag".
    Hier würde JS genau diese URL lesen. Flash bekommt die URL von JS geliefert. Jetzt muss Flash die Seite über das Gateway (AMFPHP) aus der DB auslesen, dazu brauch ich die page_ID :)

  • Ich bin mir zwar immer noch nicht ganz sicher, was du machen willst, aber ich erzähl einfach mal ins Blaue... :)

    Hilft dir der Tipp, dass der "post slug" (also z.B. /meine-erste-seite/) mit in der DB gespeichert wird? Du könntest also bei der Übergabe der URL diesen Teil abfragen (.. SELECT ID FROM wp_posts WHERE post_name LIKE '%meine-erste-seite%') und so an die ID der Seite kommen..

    Ich bin mir fast sicher, dass es falsch ist, da zu einfach, aber kann ja nicht schaden. :)

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Hilft dir der Tipp, dass der "post slug" (also z.B. /meine-erste-seite/) mit in der DB gespeichert wird?

    siehst du, danach hab' ich die ganze Zeit gesucht, dass sowas in der DB eingetragen ist unter irgend einem Attribut. Total übersehen, dass es sowas gibt.
    Also das wäre schonmal ein ganzes Stück näher an der Lösung....
    Dickes Danke.

    Einzige Problem (und das wird nur in Ausnahmefällen auftreten) ist, dass der post_name halt nicht eindeutig ist - ich kann also mehrere Results bekommen, wenn mehrere Posts mit dem Namen existieren. Wie gesagt, Ausnahmefälle, aber ich deck auch sowas gerne mit einer Lösung ab :)

    Also ich seh prinzipiell eh kein Problem darin mir die URL selbst wieder umzuwandlen. Wenn ich die Regel für das Parsen kenne, so kann ich das ja auch wieder umkehren - dachte nur, dass ich das Rad ja nicht neu erfinden muss, wenn es dafür bereits Funktionen gibt.


    Nochmal zum Verständnis was ich vor habe:
    Frontend: Flash
    Backend: WP

    Flash ist eine Animation. Du rufst die URL auf, die SWF wird geladen und alles läuft "geschlossen" innerhalb der SWF ab. Es gibt einen "Startpunkt" und nach dem kommt dann ein nicht-linearer Inhalt. Ein "fixer" Startpunkt ist alles andere als Deeplinking.
    Ein Blog hat kein Sinn wenn es kein Deeplinking gibt (finde ich zumindest :) ). Da kommt jetzt SWFAdress ins Spiel. Das Ganze ist in JS geschrieben und ermöglicht dass Deeplinking erkannt werden kann und demnach die SWF "reagieren" kann.
    Je nachdem welche URL aufgerufen wird, wird innerhalb der SWF ein bestimmter Content angezeigt.
    Dieser Content wird aus der Datenbank gelesen. Um den Content auszulesen, brauch ich also eine Identifikation des angefoderten Contents...über "/?p=123" hab ich direkt die Info, dass Post mit post_ID=123 angefordert wurde. Flash bekommt von SWFAdress also den String "?p=123" (so zumindest mein bisheriger Kenntnisstand, bin auch noch in der Recherche :) ). Dieser String kann zerlegt werden und ich komme an die post_ID 123 ran.
    Wenn jetzt allerdings die URL SEO sind, dann komme ich über einen String à la "/post-in-flash" nicht an die page_ID ran und kann somit aus der DB kein Content auslesen.

    Da greift jetzt dein Ansatz, dass in der DB "post-in-flash" im Attribut page_name im page-Table gespeichert ist.
    Allerdings besteht jetzt noch das Prob wie oben bereits beschribene bzgl. der Eindeutigkeit...

    Hoffe das Ganze wurde ein wenig klarer :)

    Einmal editiert, zuletzt von Tim Taylor (16. Juli 2007 um 17:47)

  • Ich verstehe es, ich fasse es nicht. :)

    Sagt dir das Prinzip der FlashVars etwas? Ist ein ähnliches Prinzip wie Deines, nur ohne das "Framework" SWFAdress, und es wird automatisch von Flash (8?) unterstützt. Damit schreibst du Params in den Quellcode, die dann von Flash aufgefangen werden können.

    Somit könntest du je nach aufgerufener Seite Folgendes oder ähnlich in deinen seitenquelltext schreiben:

    PHP
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <param name="FlashVars" value="page_id=<?php the_ID(); ?>" />
    <?php endwhile; endif; ?>


    und könntest so direkt die Seiten-ID mit WP-Hausmitteln abfangen.

    Allerdings müsste dann die Flashseite in einer WP-Umgebung existieren, um die Template Tags nutzen zu können..

    wpseek.com - Die WordPress-Code-Suchmaschine

  • Sagt dir das Prinzip der FlashVars etwas?

    Jap, sagt mir was :)

    Ich hol einfach mal ein wenig weiter aus, dann klärt sich, wieso das zwar eine Lösungsmöglichkeit ist, aber nicht in Frage kommt :mrgreen:

    Erstmal zum object-Tag:
    Durch diese Variante wird keine Plugin-Erkennung gewährleistet, die ich zum einen aus Benutzerfreundlichkeit (wenn es schon Flash sein muss) und zum anderen zur Gewährleisung, dass alles korrekt angezeigt wird, anbieten möchte. Wenn der Nutzer also nicht den entsprechenden Flashplayer hat, so würde mit einem object-Tag einfach nichts oder zumindest fehlerhaft angezeigt werden.
    Weiter ist das object-Tag doch recht buggy was die Interpretation der verschiedenen Browser an geht....and so on

    History:
    Flash ist wie bereits erwähnt eine Animation/Film. URL aufrufen, Flash abspielen, das wars. Eine History die über den Browser gesteuert werden kann, existiert nicht. Keine Interaktion für Vor- und Zürckbewegen nicht mehr vorhanden - auch nicht gerade benutzerfreundlich :)


    Mit SWFObject und SWFAdress (setzt auf SWFObject auf) wird dies alles möglich. Ich hab' eine Pluginkontrolle, eine Historyfunktion und ein attraktives Deeplinking zugleich :)

    Wenn es einfach keine vorhandene Funktion gibt, die mir eine aufbreitete URL automatisiert wieder in ihren Ursprungszustand auflöst, dann schreib ich mir das Script einfach selbst *g*

  • Wenn es einfach keine vorhandene Funktion gibt, die mir eine aufbreitete URL automatisiert wieder in ihren Ursprungszustand auflöst, dann schreib ich mir das Script einfach selbst *g*

    Da wird es schon eine Funktion geben, sonst würds ja nicht gehen ;)
    Der Permalink ist jedenfalls in wp_posts bei guid gespeichert, danach kannst du ja die ID aus der DB auslesen.

  • Da wird es schon eine Funktion geben, sonst würds ja nicht gehen ;)

    dafür ist mod_rewirte ja da :) nur da das Ganze ja serverseitig ist, bringt mir das nichts.

    Der Permalink ist jedenfalls in wp_posts bei guid gespeichert, danach kannst du ja die ID aus der DB auslesen.

    das ist so auch nicht korrekt. In "guid" steht der ungeparste Link zum Post selbst drin. Der bringt aber nichts, da ja aufbereitete Links beim Client ankommen.

  • Hab jetzt noch mal gelesen ;)
    Alphawolf schrieb's dir doch schon, dazu ist doch nach deiner Angabe "Flash verarbeitet die Eingabe und kann dann vom Server über ein AMFPHP-Gateway Daten anfordern" da.
    Andererseits, du kannst die ID auch mit JS abfragen, du musst nur dafür sorgen, dass die irgendwo auf der Seite steht, was ja allgemein der Fall ist. Oder ebend mit einem TAG deiner Wahl (FLashVars?). Nur was machst du wenn es eine Seite mit mehreren Post ist!?

  • Andererseits, du kannst die ID auch mit JS abfragen, du musst nur dafür sorgen, dass die irgendwo auf der Seite steht, was ja allgemein der Fall ist. Oder ebend mit einem TAG deiner Wahl (FLashVars?). Nur was machst du wenn es eine Seite mit mehreren Post ist!?

    du bist einen Schritt zu schnell :)
    Es existiert ja noch gar keine Seite, der Server schickt ja keine HTML-Seite mit bestimmten Posts an den Client.
    Die SWF wird geladen und die fragt erst beim Server nach bestimmten Daten. Was sie fragen muss, dass soll anhand der URL klar werden.

    Es geht ja erstmal darum, clientseitig herauszufinden, welche URL (die ungeparste) überhaupt aufgerufen wurde. Der Client kennt ja nur die geparste URL, die im Browser steht.

    Die ID rauszubekommen, wenn ich die ungeparste URL hab ist ja kein Thema, egal ob mit JS oder PHP

    Bei mir sind da immernoch ein paar Lücken vom Verständnis :)
    Vielleicht funktioniert das Ganze überhaupt nicht wie ich es mir vorgestellt habe - Flash ist ja schließlich böse *g*
    Kann mir vielleicht jemand erklären, wie der Prozess ist vom Aufruf der URL bis hin zum Senden der angeforderten Seite, mit Hinblich auf Permalinks und mod_rewrite - natürlich detailliert wenns geht *g*
    also nach dem Motto:
    Client sendet Request an Server
    Server registriert in .htaccess, dass blablabla


    EDIT:
    noch was anderes :)
    Fallbeispiel:
    User ruft "domain/wp/2007/07/14/hallo-welt" auf
    mod_rewrite kann ja einen redirect auf "domain/flash/?p=123" machen. Der User sieht das nicht, oder?
    Der Client bekommt dann aber auch "p=123" nicht geliefert, oder?

    Einmal editiert, zuletzt von Tim Taylor (17. Juli 2007 um 12:31)

  • Was auch noch eine Möglichkeit wäre, wäre einfach deine Permalink-Struktur anzupassen, also quasi:

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


    Dann hast du immer hinten als letzten Wert deiner URL die ID, die du dann per explode() oder wie auch immer abfragen kannst. Ich denke, weder YahoogleMSN noch der Besucher stören sich an dieser Nummer.

    wpseek.com - Die WordPress-Code-Suchmaschine

  • wäre wieder so ne Notlösung :)

    ich werd einfach weiter recherchieren, wenn ich mod_rewrite/redirect durchschaut hab, dann weiss ich mehr *g*


    Naja, zumindest wäre damit das Unique-Problem gelöst, hehe. :p

    Wenn du mod_rewrite durchschauen willst, schau dir einfach mal die mod_rewrite.c auf deinem Server an, dann wird dir die Lust schlagartig vergehen. *gg

    wpseek.com - Die WordPress-Code-Suchmaschine

    Einmal editiert, zuletzt von Alphawolf (17. Juli 2007 um 17:26)

  • IMHO ist %postname% immer eindeutig, probiert das mal aus, legt einfach mehrere Post mit selben Namen an....
    Ich versteh Tims Problem nicht, hab aber auch keine Ahnung von Flash, er beschreibt, dass er aus Flash auf seine DB zugreifen kann, wozu aber dann über die ID? IMHO ist in diesem Thread allles erklärt ;)

    NB: WP arbeitet nicht mit "echtem" mod_rewrite, es wird nur auf die index.php umgeleitet, der Rest wird dann aus der DB gemacht über GUID, sagte man auch schon hier weiter oben.

  • NB: WP arbeitet nicht mit "echtem" mod_rewrite

    ich wollte grad fragen, woher der Apache in seinem mod_rewrite eigentlich die Regel nimmt :D

    Wieso sagt das auch niemand, dass PHP die Umwandlung macht - das war jetzt ne ganze Weile aneinander vorbeigeredet, ich dachte das macht alles mod_rewrite :)

    dann mal danke an all diejenigen, die sich heir Mühe gegeben haben mir zu helfen

Jetzt mitmachen!

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