+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Native SEF Urls ändern?

  1. #1
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Frage Native SEF Urls ändern?

    Hallo.
    Ich benutze unter Joomla 1.5.15 erfolgreich die nativen SEF URLs. Das reicht mir auch vollkommen aus (Komponenten habe ich bereits getestet, das ist mir aber alles zuviel).
    Jetzt möchte ich eine "Kleinigkeit" (ich hoffe die wird nicht zu groß sein) ändern:
    Momentan sehen die URLs wie folgt aus:
    Code:
    /section/catid-categorie/articleid-articletitle.html
    bzw. von der Startseite aus:
    Code:
    /component/content/article/catid-categorie/articleid-articletitle.html
    Ich würde das gerne so ändern, dass der Bereich /section/catid-categorie bzw. catid-categorie verschwindet. Das hätte den Vorteil, dass man Artikel von einer in die andere Kategorie / Sektion verschieben könnte, ohne dass gleich die bereits vorhandenen Links von extern auf die Seiten nicht mehr funktionieren...
    Sobald ich Google anwerfe kommen nur Seiten ala: "sh404" eine weitere Komponente will ich aber nicht benutzen (glaube auch nicht, dass es damit direkt geht). Eine Abwandlung des System Plugins wäre meiner Meinung nach die beste Lösung.

    In der Datei
    Code:
    /plugins/system/sef.php
    hört mein Latein allerdings erstmal auf... Von draußen rein sind eigentlich "nur" Änderungen an der .htaccess fällig (ist ein regex König online? ;-). Aber die geänderten URLs müssen von Joomla auch gefressen werden.
    Danke für Hilfe und Tipps.
    Geändert von 8schpi (21.02.2010 um 20:09 Uhr)

  2. #2
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Frage

    Ich versuche das nochmal etwas klarer zu formulieren.
    Ich möchte:
    Alle Links auf Artikel von externen Seiten sollen von zum Beispiel
    Code:
    http://domain.de/section/catid-categorie/articleid-articletitle.html
    auf
    Code:
    http://domain.de/component/content/article/articleid-articletitle.html
    umgeleitet werden. Das hätte den Vorteil, dass ich die Artikel innerhalb der Sektionen und Kategorien verschieben könnte. Die zweite Form des Links funktioniert bei Joomla von Haus aus (wird von Frontpage benutzt).
    Ich brauche dafür "nur" den entsprechenden Eintrag in der .htaccess. Das muss irgendwas mit 'RegMatch' sein. Kann da wer helfen? Ich komme da leider nicht weiter.

    Weiß eigentlich jemand warum bei Artikeln auf die man von der Frontpage aus zugreift der Breadcrumb nicht korrekt angezeigt wird? Bei mir steht dann bei allen Artikeln nur Startseite statt Startseite -> Sektion -> Kategorie -> Artikeltitel

    Vielen Dank für jeden Tipp oder Hilfe.

  3. #3
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.628
    Bedankte sich
    83
    Erhielt 539 Danksagungen
    in 438 Beiträgen

    Standard

    Hallo,
    vielleicht erstmal zum Verständnis: J! interessiert sich eigentlich nicht wirklich für die Namen der Bereiche und Kategorien, sondern es "lebt" praktisch nur von den Links in den Menüs.
    Die "Hierarchie" die du dort einrichtest inkl. der Benennung von Menüpunkten wird in den Brotkrumen angezeigt und die zugehörigen Aliase werden zu Teilen im Pfad der URL. Dabei werden ALLE Menüs herangezogen, die du angelegt hast und zwar sowohl beim Rendern einer Blogansicht (wie der Startseite) im damit Links wie "Weiterlesen" zu generieren, ebenso wie bei der Auswertung einer einkommenenden URL.
    Wenn du nun sagst/denkst: "Wieso alle Menüs? Ich hab doch nur eins!", könnte darin das "Problem" liegen -- und die Lösung.
    Wenn J! einen Artikel -- bzw. dessen URL -- *keinem* Menüeintrag zuordnen kann, tauchen an entsprechender Stelle die numerischen Fragmente auf ("/zahl-aliasbereich/zahl-aliaskategorie/zahl-artikelalias") und die Brotkrumen sowie das Highlighting in den Menüs beginnt zu schwächeln.

    Bereiche und Kategorien sollten dir zur Ordnung und Struktur dienen und vorzugsweise auch in gleicher Form in den Menüs wiederzufinden sein. Wenn du Artikel willkürlich zwischen diesen Hierarchien hin- und herschiebst, ist es im Grunde auch korrekt, dass J! dann die (Ablage-) URL bzw. einen Weiterlesen-Link dazu ändert.
    Wenn du einen Schrank von einem Zimmer ins andere schiebst, wird er im ersten ja auch nicht mehr zu finden sein...

    Wenn du auf der Startseite Artikel anzeigen lässt und zu deren "echten" Bereiche/Kategorien sonst keine Menüeinträge existieren, muss J! passen in punkto schicke SEF-URLs und generiert eben die o.g. Dinger mit führenden Ziffern.

    Abhilfe im SEF-Chaos schaffen ein oder mehrere sogenannter "Schattenmenüs", das sind Menümodule, die nirgends im Template ausgegeben werden. Du weist sie einfach einer fiktiven oder ungenutzten Modul-Position zu.
    In diesen Menüs erstellst du zu jedem relevanten Bereich und jeder Kategorie (hierarchische) Menüeinträge und vergibst für die Einträge für dich sinnvolle Aliase. Nun kann J! anhand dieser "Unterstützung" URLs so generieren (und auswerten) wie sie deiner Ansicht nach namentlich Sinn ergeben.
    Da diese Schattenmenüs nicht auf der Seite erscheinen, gibt es natürlich auch keine sichtbaren aktiven Menüpunkte (bestenfalls die Startseite). Die Brotkrumen hingegen werden die Namen anzeigen, die du in den Schattenmenüs vergeben hast.
    Damit du und deine Besucher nicht allzu verwirrt werden, sollten die Menünamen und Aliase auch denen der zugewiesenen Bereiche und Kategorien "ähneln".

    Nur so als Tipp: ein Bereich oder eine Kategorie namens "News" ist Unfug, denn News sind irgendwann auch mal Oldies. Wenn hier dein "Verschiebeproblem" und URL-WIldwuchs liegt, versuch mal mit den Filtern in & mit den diversen Content-Modulen zu arbeiten und pack diese auf "die Startseite". Oder such die was Nettes im Joomla! Extension Directory (JED), das dir auf der Startseite oder in Form zusätzlicher Ansichten die Möglichkeit gibt, deine Artikel flexibler zu "kombinieren" als es J! kann -- und dass J! hier nicht gerade der Kracher an Flexibilität ist, ist bekannt.

    Anders gesagt: ich vermute auch mal, dass dein Workflow 'ne Konzeptschwäche hat :-)

    Viel Spaß,
    CirTap
    Geändert von CirTap (19.02.2010 um 14:42 Uhr) Grund: tipfehla
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


  4. Erhielt Danksagungen von:


  5. #4
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Standard

    Hallo CirTap,
    vielen Dank für die ausführliche Antwort. Die Lösung mit dem versteckten Menü ist super. Ich lerne immer mehr Sachen kennen, die man mit versteckten Menüs machen kann. Mich wundert, dass bei den meißten Templates keine Modulposition "Versteckt" dabei ist.
    Danke nochmal.

    Das letzte Problemchen, dass ich jetzt noch lösen möcht ist die Umleitung per .htaccess auf
    http://www.domain.de/component/conte...icletitle.html
    wenn der Referer nicht http://www.domain.de ist.

    Mein jetziger Bearbeitungsstand sieht wie folgt aus:
    Code:
    RewriteCond %{HTTP_REFERER} !^http://domain.de
    RewriteCond %{HTTP_REFERER} !^http://www.domain.de
    RewriteCond %{REQUEST_URI} ^http://www.domain.de/(.*)/(.*)/(.*).html 
    RewriteRule http://www.domain.de/(.*)/(.*)/(.*)\.html http://www.domain.de/component/com_content/article/$3.html
    Leider weiß ich nicht warum das nicht funktioniert. Hat da vielleicht noch jemand einen Tipp für mich? Danke für jede Hilfe.
    Geändert von 8schpi (21.02.2010 um 17:48 Uhr) Grund: Übertragungsfehler...

  6. #5
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Standard

    Juchuu,
    das letzte Problemchen ist auch gelöst:
    Code:
    ## Weiterleitung auf Standardlink wenn von extern kommend
    RewriteCond %{HTTP_REFERER} !^http://domain\.de [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.domain\.de [NC]
    RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)\.html 
    RewriteRule ([^/]+)/([^/]+)/([^/]+)\.html$ http://www.domain.de/component/content/article/$3\.html [R=301,L]
    Jetzt kann ich Artikel innerhalb der Beiträge verschieben und trotzdem kommt keine Fehlermeldung wenn jemand noch einen "alten" Link benutzt.
    Cool wäre jetzt, wenn man eine weitere Bedingung einfügen könnte, die etwas besagt ala:
    nur ausführen, wenn der Status eine Fehlermeldung wäre.
    Gibt es sowas?

  7. #6
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.628
    Bedankte sich
    83
    Erhielt 539 Danksagungen
    in 438 Beiträgen

    Standard

    geben? jein.
    sobald RewriteRule greift sieht Apache darin keinen Fehler und sendet "Status: 200", oder mit R=301 "Status: 301". Das sind alles keine "Fehler" für Apache.
    Fehlerseiten werden durch error.php im Templateverzeichnis produziert.
    error.php ist aber ein "dummes" JDocumentError und kein JDocumentHtml weshalb es da einige Einschränkungen bzgl. <joc:xxx .. /> gibt resp. musst du dort zu Fuß alle Module selbst zusammensuchen und rendern. Lästig aber machbar.

    Du kannst evtl. auch eine zweite RewriteRule für die Nicht-Treffer anlegen um einen 404 zu schmeissen (~ error.php)
    oder mal mit der Option 'skip|S=num' bei den RewriteCond experimentieren: überspringen von Bedigungen
    oder auf einen "Fehler-Artikel" umleiten. R=404 wäre dann aber nicht erlaubt

    Ich mach jezz erstmal Feierabend.
    CirTap
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


  8. Erhielt Danksagungen von:


  9. #7
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Standard

    Hallo CirTap,
    danke für Deine ausführliche Antwort.
    Ich habe schon wieder testweise an den Coredateien rumgehackt (lokale Installation). Ich war soweit, dass per Rewrite alle Anfragen von außerhalb auf /component/content/article/... umgeleitet werden.
    Der zweite Schritt sollte sein, dass "der Artikel" überprüft was in der Adresszeile steht. Wenn dort /component/content/article/... steht soll nach der richtigen SEF Url umgeleitet werden (zu finden in $this->article->readmore_link; ). Das hat beides für sich alleine auch geklappt. Leider war es zusammen eine unendliche Weiterleitung.

    Ich hätte mir einen Riesenvorteil von der Sache erhofft: Ich könnte meine Artikel in den Kategorien hin und herschieben wie ich lustig bin und alle externen Links funktionieren trotzdem noch.

  10. #8
    Hat hier eine Zweitwohnung Avatar von CirTap
    Registriert seit
    12.12.2005
    Ort
    Karlsruhe
    Beiträge
    1.628
    Bedankte sich
    83
    Erhielt 539 Danksagungen
    in 438 Beiträgen

    Standard

    Nun, ich bin ja immer für neue Ideen aufgeschlossen und deshalb hab ich mich auch mal auf deine eingelassen Man lernt ja mitunter selbst was dabei...
    Dennoch bin ich wie schon weiter oben erwähnt, dass dein Workflow und deine Struktur wohl etwas verbesserungswürdig sind, denn ich frag mich, warum du offenbar "ständig" am herumschieben irgendwelcher Artikel bist. Ernsthaft.
    Mal abgesehen vond er Arbeit, die du damit hast, vergraulst du mitunter auch die Leute, die sich Lesezeichen auf deine Seiten gelegt haben -- und den Suchmaschinen könnte das irgendwann auch mal auf den Keks gehen mit deinen Weiterleitungen ;-)

    Der Link rot bei J!-Seiten ist zwar schon fast legendär, aber man muss ja nicht auch noch mit Gewalt beisteuern: Cool URIs don't change
    What makes a cool URI?
    A cool URI is one which does not change.
    What sorts of URI change?
    URIs don't change: people change them.
    Ich weiß ja nicht wo du im Core rumgehackt hast, aber ein System-Plugin das vor/nach dem SEF-Plugin losrattert hätte es eigentlich tun sollen. tat es zumindest mal für mich.
    Ich hab bei der Umstellung einer Website mit handgedrechselten, statischen HTML-Dateien auf J! hierzu Joomla's "backlinks" Plugin gehackt, das derlei Umleitung eigentlich auch kann. War ursprünglich für die "Legacy SEF-URLs" aus J!1.0 gedacht. Nach meinem Eingriff hat es getan was es sollte: mehrere URIs auf eine neue URI "umleiten". Neben dem Code hab ich auch die Tabelle jos_backlinks modifiziert (die benutzt sowieso nur dieses Plugin).
    Wenn es dich interessiert, kann ich ja mal nach dem Teil suchen (ist schon etwas her). Alle URIs werden direkt in der Tabelle eingetragen (phpMyAdmin).

    CirTap
    Joomla FAQ | CSS-Probleme? Verstehen Entdecken Anwenden Meistern

    "I love deadlines. I like the whooshing sound they make as they fly by." (Douglas Adams)
    Man kann Software schnell, gut und günstig schreiben, sich aber nur 2 Dinge aussuchen.


  11. Erhielt Danksagungen von:


  12. #9
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Standard

    Hallo CirTap,

    ja, das wäre auf jeden Fall sehr interessant. Ich würde gerne sehen wie man an der Stelle ein Plugin benutzen kann. Im Moment versuche ich es mit einem Template Override zu lösen. Ich bin ca. 5 mm vor der Lösung. Leider klappt eine Abfrage nicht (komme mit strstr nicht ganz klar). Mein Ansatz sieht allerdings etwas anders aus:
    Ich möchte alle Anfragen, die von extern kommen, auf /components/content/article/ weiterleiten. Von dort werden diese Anfragen zu $this->article->readmore_link; weitergeleitet. Das hört sich verwirrend an, hat aber den Vorteil, dass man nur den alias nicht mehr ändern darf. Das ganze passiert nur für Referer!=domain. Also auch nicht wenn man von meiner Sitemap kommt. Und die aktualisiere ich nach dem Verschieben.
    Ich kann danach schieben ohne etwas tun zu müssen und externe Links funktionieren trotzdem noch. Ich verschiebe zwar nicht ständig, aber dann und wann...

    Wenn ich eine Lösung habe melde ich mich natürlich auch.

  13. #10
    Neu an Board
    Registriert seit
    14.10.2006
    Beiträge
    26
    Bedankte sich
    6
    Erhielt 3 Danksagungen
    in 3 Beiträgen

    Standard

    Ich nochmal kurz: Habs hinbekommen. Ich weiß, dass es nicht die eleganteste Lösung ist, aber sie funktioniert.
    Zwei Ergänzungen sind erforderlich:
    1. in der .htaccess:
    Code:
    RewriteCond %{HTTP_REFERER} !^http://www\.domain\.de [NC]
    RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)\.html
    RewriteCond %{REQUEST_URI} !^/bilder/(.*)/(.*)\.html
    RewriteCond %{HTTP_REFERER} !^http://www\.domain\.de/component/content/article/
    RewriteRule ([^/]+)/([^/]+)/([^/]+)\.html$ http://www.domain.de/component/content/article/$3\.html [R=301,L]
    (Zeile 3 ist um URI von einer Komponente zu schützen)

    2. in der /templates/nametemplate/html/com_content/article/default.php (als TemplateOverride):
    Code:
    <?php 
    if (stristr($_SERVER['REQUEST_URI'],$this->article->readmore_link)==false and stristr($_SERVER['HTTP_REFERER'],'/component/content/article')==false and $_SERVER['HTTP_REFERER']!==false)
    {
    Header("Location: http://".$_SERVER['HTTP_HOST'].$this->article->readmore_link.'/', true, 301); 
    exit; 
    } ?>
    ...ganz oben einfügen. Danach werden alle externen Links, auch wenn sie auf
    Code:
    http://www.domain.de/egalwas/egalwas/id-articlealias.html
    zeigen am Ziel ankommen. Einziger Wehrmutstropfen: An die Links von extern wird ein Slash angehängt. Könnte bezüglich doppeltem Content schlecht sein. Aber man muss das ja nicht ewig so lassen. Wenn ich den angehängten Slash weglasse ist es wieder eine unendliche Weiterleitung...

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein