Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#13 2009-06-27 17:28:41

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,315

Re: [de-de] Saubere URLs

GugUser, ich finde im eglischsprachigen Teil gerade eine Auffächerung des unterschiedlichen Verhaltens von Kategorien-URLs (ein Post später noch die Erklärung von Gocom). Schade dass ich’s mir nicht merken konnte (siehe mein Folgepost :p)

David, Danke für dein Beispiel und die Erläuterung!


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#14 2009-06-27 18:45:18

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

uli

Ja, das ist eine plausible Erklärung …

Danke für den Hinweis.

Offline

#15 2009-06-27 21:42:18

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,940
Website GitHub

Re: [de-de] Saubere URLs

Vielleicht eine Teillösung: je nachdem wieviele Kategorien Du hast, kannst Du das mit ein entsprechende Eintrag im .htaccess Datei hinbekommen. Es gibt ein paar Nachteile:

  • eignet sich nur für eine begrenzte Anzahl von Kategorien (sonst umständlich).
  • Du musst meist deine eigene Kategorie-Verlinkung vornehmen (oder dein plugin so editieren, dass es die links ausgibt wie du sie haben willst)
  • Es darf kein Artikel geben mit demselben url-title (sonst kollidieren sie).
  • Für die innerhalb der Kategorie befindlichen Artikeln ist der Kategorie im URL nicht zu sehen (eine Einschränkung von txp).

Ich habe dies z.B. für ein Architekten-Homepage verwendet für die Kategorisierung der Referenzen, die ja meist nicht unzählige Kategorien haben. In der .htaccess Datei (mit transmit o.ä. bearbeiten da mit der Finder nicht sichtbar) folgende Zeilen eingegeben nach RewriteEngine On und vor txps eigene Rewrite Regeln:


# custom rewrite rules for projekte/rubrik/ categories
	RewriteRule ^([^/]+)/schulen/$		index.php?s=$1&c=schulen [L]
	RewriteRule ^([^/]+)/denkmalpflege/$	index.php?s=$1&c=denkmalpflege [L]
	RewriteRule ^([^/]+)/gewerbe/$		index.php?s=$1&c=gewerbe [L]
	RewriteRule ^([^/]+)/verwaltung/$	index.php?s=$1&c=verwaltung [L]
	RewriteRule ^([^/]+)/wettbewerbe/$	index.php?s=$1&c=wettbewerbe [L]
	RewriteRule ^([^/]+)/wohnungsbau/$	index.php?s=$1&c=wohnungsbau [L]

TXP Builders – finely-crafted code, design and txp

Offline

#16 2009-06-27 23:34:29

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

jakob

Das funktioniert bei mir nicht, passiert eigenartigerweise überhaupt nichts.

Und – fehlt da nicht sowieso ein RewriteCond vor jeder Regel?

Last edited by GugUser (2009-06-28 00:00:25)

Offline

#17 2009-06-28 08:51:57

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,940
Website GitHub

Re: [de-de] Saubere URLs

Ich habe auch MAMP (PRO) 1.7.2 und es klappt wie unten ohne Probleme. Wie gesagt, es muss vor den txp-eigene Regeln kommen, damit es zuerst greift. Natürlich musst Du deine eigene kategorie-namen eingeben, vielleicht auch die /xy/ Unterverzeichnis, die Du verwendest (oder die /xy/ in RewriteBase Regeln eingeben und aktiv machen = # entfernen):

#DirectoryIndex index.php index.html

#Options +FollowSymLinks
#Options -Indexes

<IfModule mod_rewrite.c>
	RewriteEngine On
	#RewriteBase /relative/web/path/

# custom rewrite rules for projekte/rubrik/ categories
	RewriteRule ^([^/]+)/schulen/$		index.php?s=$1&c=schulen [L]
	RewriteRule ^([^/]+)/denkmalpflege/$	index.php?s=$1&c=denkmalpflege [L]
	RewriteRule ^([^/]+)/gewerbe/$		index.php?s=$1&c=gewerbe [L]
	RewriteRule ^([^/]+)/verwaltung/$	index.php?s=$1&c=verwaltung [L]
	RewriteRule ^([^/]+)/wettbewerbe/$	index.php?s=$1&c=wettbewerbe [L]
	RewriteRule ^([^/]+)/wohnungsbau/$	index.php?s=$1&c=wohnungsbau [L]

# txp's own rewrite rules
	RewriteCond %{REQUEST_FILENAME} -f [OR]
	RewriteCond %{REQUEST_FILENAME} -d
	RewriteRule ^(.+) - [PT,L]

	RewriteCond %{REQUEST_URI} !=/favicon.ico
	RewriteRule ^(.*) index.php

	RewriteCond %{HTTP:Authorization}  !^$
	RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

#php_value register_globals 0

Mein Hinweis in der andere Thread auf MAMP PRO vermeidet, dass man mit unterschiedliche Verzeichnisstrukturen online und lokal arbeiten muss.


TXP Builders – finely-crafted code, design and txp

Offline

#18 2009-06-28 17:53:50

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

jakob schrieb:

Ich habe auch MAMP (PRO) 1.7.2 und es klappt wie unten ohne Probleme. Wie gesagt, es muss vor den txp-eigene Regeln kommen, damit es zuerst greift. Natürlich musst Du deine eigene kategorie-namen eingeben, vielleicht auch die /xy/ Unterverzeichnis, die Du verwendest (oder die /xy/ in RewriteBase Regeln eingeben und aktiv machen = # entfernen).

Dein Kodevorschlag funktioniert bei mir auf dem Webserver nicht, zeigt keine Auswirkungen, lokal habe ich es nicht ausprobiert (benutze MAMP ohne PRO).

“@/xy/@ in RewriteBase-Regeln” eingeben? Das ist mir unverständlich, weil die Kategorien in mehreren Sektionen in verschiedenen und sich verändernden Konstellationen vorkommen (als Filter benutzt werden) können.

Offline

#19 2009-06-28 20:47:23

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,940
Website GitHub

Re: [de-de] Saubere URLs

“@/xy/@ in RewriteBase-Regeln” eingeben? Das ist mir unverständlich,

Sorry, dies bezog sich auf dein andere Thread wo Du sagtest, dass deine Dateien auf deine lokal-Webserver in der Unterverzeichnis /xy/ liegen.

weil die Kategorien in mehreren Sektionen in verschiedenen und sich verändernden Konstellationen vorkommen (als Filter benutzt werden) können.

Bin mir nicht sicher was Du hiermit meinst. Die Rewrites in mein Beispiel oben sind nicht auf eine bestimmte Sektion vorgeschrieben, sollten also mit verschiedenen Sektionen funktionieren. Warum das nicht funktioniert kann ich nicht erklären. Nur zur Sicherheit:

  • Du hast deine eigene Kategorienamen eingegeben auf beide Seiten der RewriteRule (also nicht meine oben)?
  • Du hast die Funktionstüchtigkeit durch manuelle Eingabe der Links (http://mydomain.com/sektion-1/mein-kat-name) getestet?

Wenn das klappt, dann musst Du dein Quellcode manuell so einrichten, dass sie solche Links bilden.


TXP Builders – finely-crafted code, design and txp

Offline

#20 2009-06-28 21:40:32

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

jakob schrieb:

Ich empfinde nicht, wie du im andern Beitrag meintest, wir würden aneinander vorbei reden. Ich habe wahrscheinlich die Sachlagen nicht vollständig erklärt. Aber, der Austausch kann ja eventuell einen von uns weiter bringen … ;-)

Nur zur Sicherheit:

  • Du hast deine eigene Kategorienamen eingegeben auf beide Seiten der RewriteRule (also nicht meine oben)?

Selbstverständlich ;-)

  • Du hast die Funktionstüchtigkeit durch manuelle Eingabe der Links (http://mydomain.com/sektion-1/mein-kat-name) getestet?

Ja, funktioniert aber nicht, führt mich auf die Fehlerseite.

Um das Thema etwas reeler zu machen, und da die Website unterdessen ja funktioniert, hier der Link zum Goldschmiedeatelier Sollberger, der Webauftritt, um den es geht …

Einige Erklärungen dazu:

  • über den Link Dienstleistungen kommt man zur Sektionsseite Dienstleistungen, wo als Links im Untermenü Artikelnamen stehen
  • über den Link Eheringe, z. B., kommt man zur Sektionsseite Eheringe, die Links im Untermenü zeigen auf weitere Sektionsseiten
  • über Links des Typs Schmuckart, z. B. Ringe, kommt man auf die Sektionsseite Ringe, wo die Fotogalerie aus Artikeln zusammengesetzt ist, das Untermenü listet nur die Kategorien auf, in welchen Einträge vorliegen, das ist in Männerschmuck anders zusammengestellt als in Ohrschmuck

Das mag als Organisation eventuell eigenartig wirken, ergibt sich aber aus der Struktur der Website und ermöglicht dem Kunden eine einfache Handhabung.

Nun zurück zu unserem Diskussionsthema:

Gegenwärtig steht in der .htaccess-Datei an der entsprechenden Stelle (versuchsweise etwa bis morgen Abend) eine der von dir vorgeschlagenen Zeilen, RewriteRule ^([^/]+)/gelbgold/$ index.php?s=$1&c=gelbgold [L], das heisst, die Adresse http://sollberg-schmuck.ch/ringe/gelbgold müsste eigentlich funktionieren, wenn ich dich richtig verstehe, tut sie aber nicht, die Adresse http://sollberg-schmuck.ch/ringe/?c=gelbgold aber schon. Und eben dieses /?c= finde ich unschön und unpraktisch, aber, nach der von uli verlinkten Erklärung verstehe ich das irgendwie.

Offline

#21 2009-06-29 07:58:56

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,940
Website GitHub

Re: [de-de] Saubere URLs

Hi GugUser.

http://sollberg-schmuck.ch/ringe/gelbgold/ funktioniert für mich (und sieht gut aus), wenn ich es eingebe. Auch in einem anderen Bereich klappt’s: http://sollberg-schmuck.ch/colliers/gelbgold/. Vielleicht hast Du die Slash am Ende weggelassen? Probiere mal dies:

RewriteRule ^([^/]+)/gelbgold/?$	 index.php?s=$1&c=gelbgold [L]

Der Unterschied ist ein ? nach dem Slash nach gelbgold/ – ? = voranstehende Zeichen optional. Dann sollte es mit oder ohne Slash funktionieren.


TXP Builders – finely-crafted code, design and txp

Offline

#22 2009-06-29 13:26:08

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

Hallo Jakob

Ja, da hast ru Recht, das hing offenbar vom Slash ab und funktioniert nun in beiden Versionen. Ein weiteres Missverständnis ist, dass ich meinte, die URLs seien dann immer ?c=-frei. Dein Lösungsvorschlag ermöglicht, dass eine URL-Eingabe ohne ?c= funktioniert (also zum Ziel führt), TxP selbst aber noch die ?c=-Version produziert.

Ich bin mir noch unsicher, ob ich das so implementieren will, aber, dein Vorschlag funktioniert im erwähnten Sinn! Danke fürs Dranbleiben.

Und noch dies: Könnte das eventuell ein Problem mit scheinbar doppeltem Inhalt geben?

Last edited by GugUser (2009-06-29 14:24:16)

Offline

#23 2009-06-29 15:58:34

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,940
Website GitHub

Re: [de-de] Saubere URLs

Dein Lösungsvorschlag ermöglicht, dass eine URL-Eingabe ohne ?c= funktioniert (also zum Ziel führt), TxP selbst aber noch die ?c=-Version produziert.

Ja, die Lösung ist eigentlich ganz unabhängig von txp. Wie ich in der erste Post schrieb, gibt es ein paar Nachteile, darunter dass man die Links entweder manuell einbauen muss.

Alternativ, modifizierst Du dein plugin (cbs_category_list?), so dass es diese Links anders ausgibt. Das ist womöglich nicht so schwer. Suche gegen Ende der cbs_category_list plugin-code diese Abschnitt:

       $out[] = tag(str_replace('& ','& ', $title), 'a', ' href="'.pagelinkurl(array('c'=>$name, 's'=>$section))
                .(($activeclass && ($s == $section) && ($c == $name)) ? '" class="'.$activeclass.'"' : '"')).($count ? ' ('.$count.')' : '');

und ändere es in:

        $out[] = tag(str_replace('& ','& ', $title), 'a', ' href="/'.$section.'/'.$name.'"'
                .(($activeclass && ($s == $section) && ($c == $name)) ? '" class="'.$activeclass.'"' : '"')).($count ? ' ('.$count.')' : '');

Ich habe’s nicht getest aber an und für sich ist die Änderung geringfügig. Statt die txp-eigene pagelinkurl-funktion zu nutzen, ist es ausgetauscht gegen eine manuelle section/category Variante.

Und noch dies: Könnte das eventuell ein Problem mit scheinbar doppeltem Inhalt geben?

Du meinst im Sinne von google? Mit rel=canonical kannst Du dies vorbeugen in dem Du deine bevorzugte URL als die zu protokollierende URL angibst. Es gab mehrere Threads dazu in letzte Zeit im Forum (bspw. diese).

Wenn Du keine Links in eine andere Form anbietest oder mittels ein Google-Sitemap übermittelst, soll das Problem eigentlich nicht vorkommen. rah_sitemap erlaubt Dir z.B. bestimmte Standard-kategorien aus der sitemap auszuschließen, und auch eigene Zusatz-URLs zu übermitteln, so dass Du die von txp gebaute Kategorie-Links ausschließen kannst und deine eigene Linkstruktur eingeben kannst.

Wie gesagt, das ist alles ganz einfach für eine übersichtliche Seite, zunehmend umständlich, wenn eine Seite größer wird.

Last edited by jakob (2009-06-29 16:07:53)


TXP Builders – finely-crafted code, design and txp

Offline

#24 2009-06-29 23:20:49

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,477

Re: [de-de] Saubere URLs

Jakob:

Das ist genau das, was ich mir als mögliche Lösung vorgestellt hatte, aber früher nicht fertig brachte: eine Kodeänderung in cbs_category_list. Also setzte ich deinen Vorschlag versuchsweise um. Die durch den Navigationslink produzierte URL enthielt danach die Kategorie ohne ?c=, so wie gewünscht. Allerdings wurde diese URL von TxP nicht erkannt und führte deshalb auf die Fehlerseite.

Ich musste musste parallel dazu mit der Rewrite-Funktion in der .htaccess-Datei arbeiten. Schade, weil ich denke, dass ich deshalb diese Lösung nicht anwenden werde (ist unterdessen wieder so wie vorher), weil es durchaus möglich ist, dass der Websitebesitzer auf einmal eine neue Kategorie anlegt, die in der Rewrite-Funktion dann nicht vertreten ist und deshalb nicht funktionieren würde.

Schade, ich glaubte mich dem Ziel schon nahe … ;-)

Offline

Board footer

Powered by FluxBB