Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2009-06-27 19:04:24

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

[de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Ich habe schon wieder ein Frage, zu der ich trotz intensiver Suche keine Antwort finde.

An meiner TxP-Website arbeitete ich in der Schlussphase direkt auf dem Webserver. Unterdessen funktioniert alles einwandfrei, auch wenn es noch einiges zu perfektionieren geben wird (dazu ein zukünftiger Beitrag).

Ich wollte allerdings eine lokale Version der Website auf meinem Computer (auch als momentanes Backup). Deshalb löschte ich die Datenbank der früheren, lokalen Version, in der ich anfangs entwickelte, erstellte eine leere Datenbank und importierte die Datenbank aus der TxP-Installation des Webservers. Nach den notwendigen Anpassungen funktionierte die Website auch lokal … fast …

Mit dem Backend gibt’s keine Probleme, und die Startseite der Website funktioniert auch. Aber über das Menü habe ich Zugang auf die weiteren Sektionen, deren Links zeigen URLs, in welchen der Name des Website-Ordners in MAMP fehlt. In den Einstellungen von Txp ist die Webadresse als localhost:8888/xy angegeben, die Startseite zeigt im Browser richtig die URL http://localhost:8888/xy/ , das ist bis dahin so wie gewollt.

Im Menü der Website werden die Links zu den Sektionen – aus hier nicht erklärten Gründen – so geschrieben: /sektion-xy , was auf dem Webserver funktioniert. Lokal mit MAMP produziert das aber URLs wie http://localhost:8888/sektion-xy/ statt http://localhost:8888/xy/sektion-xy/

Ob ich das verständlich erklären konnte?

Ich habe alles mir Mögliche ausprobiert, um das Problem über die httpd.config von MAMP zu lösen, schaffe das aber nicht.

Kommt das jemandem bekannt vor, weiss jemand eine Lösung?

Offline

#2 2009-06-27 21:24:33

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Möglicherweise hast Du dein Links zu dein Sektionen händisch eingegeben (hard-coded). Wenn sie mit ein slash wie folgt /sektion... beginnen, zählt das ab der Domainname, was eine Erklärung für das was du beobachtest wäre.

Wenn Du dagagen statt vorangehende slash, <txp:site_url />sektion... für dein Links auf deine Seite verwendest, sollte das klappen auch mit ein Unterverzeichnis, denn txp setzt dann hier der Wert aus den Einstellungen ein.

Nebenbei bemerkt, je nach dem wieviele Sites du betriebst ist MAMP Pro ein Investition Wert, denn damit kannst Du jeder Seite in ein “Virtualhost” lagern und eine eigene lokale Domain geben, bspw. www.mydomain.dev (die Dateien auch in eine eigene Ordner wo Du es haben willst speichern). So muss man sich nicht mit Unterverzeichnisse im localhost herumschlagen.

Last edited by jakob (2009-06-27 21:26:00)


TXP Builders – finely-crafted code, design and txp

Offline

#3 2009-06-27 23:58:50

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

jakob schrieb:

Möglicherweise hast Du dein Links zu dein Sektionen händisch eingegeben (hard-coded). Wenn sie mit ein slash wie folgt /sektion... beginnen, zählt das ab der Domainname, was eine Erklärung für das was du beobachtest wäre.

Ja, das ist genau so gewollt, auf dem Webserver funktioniert das wunderbar, das heisst, es wird die domain.ch/sektions-name ausgegeben, und dann, wenn dort eine Kategorie gewählt wird domain.ch/sektions-name/?c=kategorie-name (so wie in meinem andern Beitrag saubere URLs beanstandet). Übrigens, auf den meisten Seiten werden dann Artikellisten ausgegeben, also keine Artikel-Adresse in den URLs.

Was ich am Anfang des Beitrages vergass zu erwähnen ist, dass die Navigation mit den handgeschriebenen Sektionslinks mit MAMP ebenso funktioniert, wenn ich dort den / davor entferne, also nur sektions-name. Das ist das, was ich nicht verstehe, dass auf dem Apache von MAMP das ohne / funktioniert, und auf dem Apache des gehosteten, virtuellen Servers es den / braucht, beide danach domain.ch/sektions-name ausgeben.

Hier, falls es jemanden interessieren sollte, meine Konstruktion eines li-Eintrages für einen Sektionslink* in der ersten Navigationsebene:

<txp:if_section name="sektion-1"><li class="aktuell">Über uns
<ul>
<li class="aktuell">Sektion-1</li>
<li><a href="/sektion-2">Sektion-2</a></li>
<li><a href="/sektion-3">Sektion-3</a></li>
</ul>
</li><txp:else /><txp:if_section name="sektion-2"><li class="aktuell">Über uns
<ul>
<li><a href="/sektion-1">Sektion-1</a></li>
<li class="aktuell">Sektion-2</li>
<li><a href="/sektion-3">Sektion-3</a></li>
</ul>
</li><txp:else /><txp:if_section name="sektion-3"><li class="aktuell">Über uns
<ul>
<li><a href="/sektion-1">Sektion-1</a></li>
<li><a href="/sektion-2">Sektion-2</a></li>
<li class="aktuell">Sektion-3</li>
</ul>
</li><txp:else /><li><a href="/sektion-1">Über uns</a></li></txp:if_section></txp:if_section></txp:if_section>

Das ergibt eine saubere HTML-Ausgabe, wie ich es mit TxP-Tags oder Plug-Ins nicht hinbekommen hätte, ohne a-Element im aktuellen Sektions-Namen.

Last edited by GugUser (2009-06-28 17:44:23)

Offline

#4 2009-06-28 08:41:50

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Das liegt nicht an MAMP sondern an der Unterverzeichnis /xy/. Mit nur ein vorangegene slash gilt der Link ab der Domainname (in diesem Fall localhost:8888). Ohne slash wird der Link am Ende der bestehende Link gesetzt. Das funktioniert meist auf tiefer liegende Seiten dann nicht (du bekommst dann links in der Art localhost:8888/xy/sektion-1/mein-artikel/sektion-2, die ins leere führen).

Wie ich schrieb, gebe dein Navigation wie <txp:site_url />sektion-2 ein und es wird funktionieren.

Ich glaube du könntest dein Navigation ein ganze Stück vereinfachen, wie folgt (ungetestet):

<txp:section_list sections="sektion-1,sektion-2,sektion-3" wraptag="ul" break="">
  <txp:if_section name='<txp:section />'>
    <li class="aktuell"><txp:section title="1" /></li>
  <txp:else />
    <li><a href="<txp:site_url /><txp:section title="0" />">txp:section title="1" /></a></li>
  </txp:if_section>
</txp:section_list>

Die zweite Zeile besagt, wenn die Sektion in der Sektion-List die aktuelle Sektion ist (die ‘einfachen’ Anführungszeichen sind in diesem Fall richtig) dann gebe die Sektion ohne Link aus, ansonsten als normale link. Wahrscheinlich läßt sich der else Fall sogar noch weiter vereinfachen als <txp:section link="1" title="1" wraptag="li" />.


TXP Builders – finely-crafted code, design and txp

Offline

#5 2009-06-28 17:43:04

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

jakob schrieb:

Das liegt nicht an MAMP sondern an der Unterverzeichnis /xy/. Mit nur ein vorangegene slash gilt der Link ab der Domainname (in diesem Fall localhost:8888). Ohne slash wird der Link am Ende der bestehende Link gesetzt. Das funktioniert meist auf tiefer liegende Seiten dann nicht (du bekommst dann links in der Art localhost:8888/xy/sektion-1/mein-artikel/sektion-2, die ins leere führen).

Das trifft in meinem Fall nicht so zu. Mit meinem Anfangsbeitrag meinte ich etwa das: Es ist mir unverständlich, warum dieselbe TxP-Kodierung auf auf einem Apache so funktioniert wie ich mir das vorstelle und auf dem andern Apache nicht, nur funktioniert, wenn ich Änderungen vornehme. Deshalb vermute ich, dass das mit verschiedenen Serverkonfigurationen zu tun hat, ohne zu wissen, mit welchen.

Wie ich schrieb, gebe dein Navigation wie <txp:site_url />sektion-2 ein und es wird funktionieren.

Selbstverständlich kann ich das Problem mit deinem Vorschlag <txp:site_url />sektion-2 lösen, ich suchte (suche) aber nach Methoden, möglichst einfachen Quelltext zu produzieren. Leider wird dieser mit jeder Menge URLs gefüllt, bei denen die Domain fehlen könnte, wenn das mit relativen Pfaden (auf das Wurzelverzeichnis bezogen) funktionieren könnte. Jede eingebundene Foto hat z. B. eine eigene URL mit absolutem Pfad, das finde ich unnötig und stört mich (und ich versteh nicht, warum das so umgesetzt wird, weil ich in der .htaccess-Datei RewriteBase / definiert habe), nur als Zwischenbemerkung, ist eigentlich im Moment hier nicht das Thema.

Ich glaube du könntest deine Navigation ein ganzes Stück vereinfachen, wie folgt (ungetestet):

<txp:section_list sections="sektion-1,sektion-2,sektion-3" wraptag="ul" break="">
  <txp:if_section name='<txp:section />'>
    <li class="aktuell"><txp:section title="1" /></li>
  <txp:else />
    <li><a href="<txp:site_url /><txp:section title="0" />">txp:section title="1" /></a></li>
  </txp:if_section>
</txp:section_list>

Die zweite Zeile besagt, wenn die Sektion in der Sektion-List die aktuelle Sektion ist (die ‘einfachen’ Anführungszeichen sind in diesem Fall richtig) dann gebe die Sektion ohne Link aus, ansonsten als normale link. Wahrscheinlich läßt sich der else Fall sogar noch weiter vereinfachen als <code><txp:section link=“1” title=“1” wraptag=“li” />.

Nachtrag 7. Juli 2009:

In der folgenden Zeile ist ein vorher vorkommender Fehler korrigiert:

<li><a href="<txp:site_url /><txp:section title="0" />"><txp:section title="1" /></a></li>

Ende Nachtrag

(Ich fand nicht heraus, wie ich den Kodeblock ins mehrzeilige Zitat einbauen könnte)

Ich gehe davon aus, dass unsere beiden Beispiele nicht genau dasselbe tun. In meinem geht es um zwei mögliche Ausgaben von “nav-intern”, entweder:

<ul id="nav-intern">
	<li><a href="/">Startseite</a></li>
	<li><a href="/sektion-1">Über uns</a></li>
	<li><a href="/kontakt">Kontakt</a></li>
</ul>

Oder, wenn z. B. “Über uns” geklickt wurde (“Über uns” ist keine Sektion, nur die Seitenvorlage für die drei folgenden Sektionen, es wird nach dem Klick als erstes die Sektion-1 gezeigt):

<ul id="nav-intern">
	<li><a href="/">Startseite</a></li>
	<li class="aktuell">Über uns
		<ul>
			<li class="aktuell">Sektion-1</li>
			<li><a href="/sektion-2">Sektion-2</a></li>
			<li><a href="/sektion-3">Sektion-3</a></li>
		</ul>
	</li>
	<li><a href="/kontakt">Kontakt</a></li>
</ul>

Last edited by GugUser (2009-07-07 18:04:57)

Offline

#6 2009-06-28 20:33:33

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Vermutlich reden wir aneinander vorbei. Möglich ist es zwar immer, dass die Serverkonfigurationen unterschiedlich sind. Ob und wie das dies erklärt weiß ich nicht.

Der Tatsache aber, dass der Webserver online ins Würzelverzeichnis liegt und auf dein Rechner in eine Unterverzeichnis liegt wäre aber eine denkbare Erklärung warum die Links sich anders verhalten, vor allem weil Du dein URLs in der Art /sektion-1, die ja in Verhältnis zu der Domainname stehen. Auf deine lokale Webserver ist der Domainname http://localhost:8888/ (ohne /xy/), d.h. dein Links zeigen auf http://localhost:8888/sektion-1 und funktionieren nicht (sie sollen ja auf http://localhost:8888/xy/sektion-1 zeigen).

Was ich am Anfang des Beitrages vergass zu erwähnen ist, dass die Navigation mit den handgeschriebenen Sektionslinks mit MAMP ebenso funktioniert, wenn ich dort den / davor entferne, also nur sektions-name

Auch diese wurde mit meine Vermutung übereinstimmen. Wenn Du ohne der voranstehende / dein Links bildest hängt es dein Link direkt an das was in der Adresszeile der Browser steht. Wenn zufällig das richtige in der Adresszeile steht, dann funktioniert es (und das ist der Fall in der erste Ebene: http://localhost:8888/xy/). Wenn Du aber auf eine Unterseite bist und dann diese gleiche Link klickst, hängt es dein Link wieder hinten an das in der Adresszeile steht, nur diesmal steht eine längere Link drin. Hier klappt es nicht, denn der Link heißt dann etwas wie http://localhost:8888/xy/sektion-1/mein-artikel/sektion-2. Du bekommst dann ein 404.

Ich glaube deine Optionen sind:

  1. mit <txp:site_url /> zu arbeiten. Ja du bekommst längere Links in dein Quellcode. Nachteil: Es kostet Dir ein paar Bytes und sieht nicht zu gut aus für die Leute die dein Quellcode nach Formatierungsschönheit beurteilen. Vorteil: Es funktioniert wenn Du dein Site on- und offline transferierst (ändere deine Einstellungen einmal, dann geht’s).
  2. arbeite lokal mit Virtualhosts, damit deine Dateien online wie offline in der Root-verzeichnis liegen (geht sehr einfach mit MAMP Pro, aber Du kannst auch der eingebaute Mac Apache so manuell konfigurieren). Nachteil: kostet etwas einmal (Geld oder Nerven). Vorteil: keine solche Probleme und dein saubere /sektion-1 links funktionieren on- und offline.
  3. Bastel deine .htaccess lokal, so dass alles Rewrites in Verhältnis zu der Unterverzeichnis /xy/ liegen. Vorteil: wenn’s klappt, dass Du keine andere Änderungen machen musst. Nachteil: Du musst dein htaccess online und offline unterschiedlich haben.
  4. ändere deine Navigationsform lokal und online. Nachteil: umständlich, denn Du musst andere txp-Forms online und offline verwenden. m.E. nicht annehmbar.

Ich gehe davon aus, dass unsere beiden Beispiele nicht genau dasselbe tun.

Ja stimmt, ich habe übersehen, dass “Über uns” eine Art faux-Eintrag als Titel eine Untergruppe ist. Dann musst Du das wohl manuell bauen wie Du es machst.


TXP Builders – finely-crafted code, design and txp

Offline

#7 2009-06-28 22:00:47

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

jakob schrieb:

(…) Wenn Du ohne der voranstehende / dein Links bildest hängt es dein Link direkt an das was in der Adresszeile der Browser steht. Wenn zufällig das richtige in der Adresszeile steht, dann funktioniert es (und das ist der Fall in der erste Ebene: http://localhost:8888/xy/). Wenn Du aber auf eine Unterseite bist und dann diese gleiche Link klickst, hängt es dein Link wieder hinten an das in der Adresszeile steht, nur diesmal steht eine längere Link drin. Hier klappt es nicht, (…)

Ja, da hast du recht, mir ist in meiner Beschreibung ein Fehler unterlaufen. Hier noch einmal richtig:

Auf dem Webserver funktioniert das mit dem vorangestellten /, entsprechende Verweise werden relativ zum Wurzelverzeichnis geschrieben, z. B. auch zur CSS-Datei, oder in der Navigation steht für die Startseite nur ein “/”. Auf dem lokalen Server (MAMP) geht das aber nicht, dort muss ich nicht, wie ich falsch schrieb, den Slash wegnehmen, sondern eben <txp:site_url /> hinsetzen. Dann funktioniert’s auch. Das sind die Unterschiede zwischen den beiden Servern.

Die Website liegt in MAMP im Ordner htdocs in einem eigenen Ordner sollberger. In die lokale .htaccess-Datei schrieb ich RewriteBase /sollberger, die URL http://localhost:8888/sollberger/ führt denn auch zur Startseite, die Links der Navigation mit z. B. /kontakt funktionieren aber nicht, weil das nur http://localhost:8888/kontakt produziert. Weitere Versuchsvariationen über RewriteBase in der lokalen .htaccess-Datei ergaben kein positives Resultat.

Vielleicht ist das eben das fehlende MAMP PRO. Und da ich nach meinem ersten grösseren TxP-Versuch wahrscheinlich damit weiter machen werde, komme ich um die Anschaffung dieser PRO-Version nicht herum, da MAMP doch einfacher zu handhaben ist als der im Mac OS integrierte Apache … ;-)

Last edited by GugUser (2009-06-28 22:11:36)

Offline

#8 2009-06-29 08:17:30

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Man kann Virtualhosts manuell einrichten. Es gibt auch VirtualHostX, der nachfolger von ein Programm namens Headdress. Gerrit @ Praegnanz hat mal erklärt wie man VirtualHostX mit MAMP verwendet (noch eine Anleitung auf Englisch).

Mit MAMP Pro geht das alles ein Tick einfacher:

  1. Wechsel auf der “Hosts Tab”
  2. Click auf Plus links unten
  3. Gebe dev domain-adresse rechts oben ein, bspw. mein-domain.dev
  4. Erzeuge ein Ordner, wo Du deine Dateien ablegen will (kann außerhalb der MAMP Setup sein, ist sogar zu empfehlen, da einfacher MAMP später zu aktualisieren). Ich stelle sie in der Mac-eigene /Sites/ bzw. /Websites/ Ordner von OS-X. Bei “Speicherort”, diese Ziel auswählen.
  5. Übernehmen und Server neu starten (man wird dazu aufgefordert).
  6. Gebe http://mein-domain.dev in der Adresszeile ein und weiter machen.

Das war’s: MAMP Pro übernimmt die Einrichtung der Virtualhosts in der httpd und hosts Datei. Das ganze dauert gerade mal eine Minute. Unter erweitert kannst Du Sondereinstellungen vornehmen, das mache ich aber praktisch nie.

Wer gern bastelt kann es natürlich manuell für umsonst machen. Auf Windows habe ich das früher manuell gemacht mit XAMPP und Stunden damit verbracht die genaue Einstellungen richtig hinzubekommen.

Last edited by jakob (2009-06-29 08:24:54)


TXP Builders – finely-crafted code, design and txp

Offline

#9 2009-06-29 14:02:33

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Hallo Jakob

Danke für die Links. Gerrits Artikel, an den ich mich vage erinnerte, suchte ich vor ein paar Tagen, konnte ihn aber aus unbekannten Gründen nicht mehr finden.

Ich werde die Texte demnächst durchlesen, danke für die Tipps.

Offline

#10 2009-06-30 15:49:38

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

Re: [de-de] relative Pfade im lokalen Server (MAMP) und auf dem Webserver

Noch ein abschliessender (hoffentlich ;-) ) Kommentar zu diesem Thema:

Mir kam die Idee, das müsste auf dem lokalen Server eigentlich einfacher zu lösen sein, z. B. mit einem Redirect in der projekteigenen .htaccess-Datei, etwa so Redirect http://localhost:8888/ http://localhost:8888/sollberger/ oder besser so Redirect / http://localhost:8888/sollberger/, aber das funktioniert nicht, ebenso wenig mit einem entsprechenden RewriteCond und RewriteRule. Dieses MAMP lässt sich offenbar nicht einfach austricksen, muss halt doch zu den oben beschriebenen, komplizierteren Lösungen greifen.

Last edited by GugUser (2009-06-30 20:06:39)

Offline

Board footer

Powered by FluxBB