[gelöst] Relative URLs bei Nutzung im Unterverzeichnis und direkt im Root
am 29.05.2015 - 16:41 Uhr in
Hallo,
wir sind gerade dabei, unsere Webseite neu zu gestalten und haben die neue Version in einer VM mit XAMPP in einem Unterverzeichnis des Roots so wie in einem geblockten Unterverzeichnis des Live-Webserver-Roots, während die bisherige Live-Seite, sprich deren komplette Datei- / Ordnerstruktur, direkt im Webserver-Root liegt.
Bisher haben wir immer relative Links zu Bildern oder Unterseiten verwendet wie z.b.
<img title="Icon1" alt="Icon1" src="/sites/default/files/images/icons/icon1.png">
oder
<a href="/unterseite1" title="Unterseite1">Unterseite1</a>
Das funktioniert bei der Live-Seite, allerdings nicht wenn die Webseite in einem Unterverzeichnis liegt, so dass man nicht komplett alles testen kann. Dabei wird ausgehend vom Root-Verzeichnis nach dem Pfad zu der Unterseite / dem Icon gesucht, ohne dass das Unterverzeichnis berücksichtigt wird. Interessanterweise sind die Links, die in den Menüs generiert werden, korrekt, sprich darin kommt das Unterverzeichnis vor.
Die erste Frage: kann man es diese Funktionalität auch für Links anwenden, die in den Texten manuell eingegeben wurden?
Es war mir klar, dass das kein neues Thema / Problem ist, also habe ich erst auf mehrere Wegen gesucht - auch hier. Dabei habe ich z.B. diese Beiträge gefunden:
http://www.drupalcenter.de/node/43161
http://www.drupalcenter.de/node/4841
http://www.drupalcenter.de/node/27426
http://www.drupalcenter.de/node/7212
http://www.drupalcenter.de/node/13152
Zusammenfassend geht es meistens um diese Tipps:
- base_url in der settings.php setzen
- lokal die RewriteBase in der .htaccess auf "/unterverzeichnis_name" setzen
- einen VHost anlegen, der direkt in das Verzeichnis zeigt
- pathologic-Modul (http://drupal.org/project/pathologic)
- DB-Update mit:
<?php
print str_replace('href="/', 'href="/unterordner_name/', $content);
?>
1 und 2 haben bei mir wie auch bei einigen anderen nicht funktioniert.
3 und 4 habe ich noch nicht probiert
5 würde ich ungerne machen, da es nicht der Sinn der Sache ist, denke ich
Was ich zwischendruch auf Verdacht ausprobiert hatte, war der führende Punkt vor dem Slash, also
<img title="Icon1" alt="Icon1" src="./sites/default/files/images/icons/icon1.png">
bzw.
<a href="./unterseite1" title="Unterseite1">Unterseite1</a>
Das funktioniert dann im Unterverzeichnis und auch wenn ich das bei der Live-Seite ausprobiere. Da gibt es dann einfach kein über- / untergeordnetes Verzeichnis, so dass man einfach wieder im Root landet bzw. es gar nicht erst verlässt.
Gibt es Gründe, die dagegen sprechen, es so zu machen? Außer dass ich so alle manuell gesetzten Links anpassen müsste?
Ich hatte da (vielleicht auch unbegründet) Bedenken bzgl. des Crawlers / der Indexierung, weil während im Browser das Ergebnis in beiden Fällen gleich ist, im Quelltext der Seite dann doch eine Änderung gibt:
<a href="./unterseite.html" title="unterseite">unterseite</a>
und nicht wie bisher
<a href="/unterseite.html" title="unterseite">unterseite</a>
und da weiß ich nicht, ob der Crawler damit auch klar kommt, wie der Browser, oder ob er Schwierigkeiten damit hätte. Und vielleicht sprich ja sonst noch etwas dagegen, daher wollte ich zur Sicherheit nachfragen, bevor ich mir die Arbeit mache und alle internen Links mit dem führenden Punkt versehe.
- Anmelden oder Registrieren um Kommentare zu schreiben
Was spricht dagegen Nummer 3)
am 29.05.2015 - 17:37 Uhr
Was spricht dagegen Nummer 3) zu probieren, ist doch eigentlich der einfachste und gängiste Ansatz?
Gruß Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Hallo Christian, zum einen
am 29.05.2015 - 17:52 Uhr
Hallo Christian,
zum einen kenne ich mich damit nicht aus :) aber das soll das kleinste Problem sein, kann man sich bestimmt einlesen und ein Video-Tutorial war auch irgendwo verlinkt.
Damit würde ich es vermutlich unter XAMPP zum Laufen bringen, aber ginge das auch auf einem richtigen Webserver bei einem Hoster? (Host Europe) Da wäre es ja auch gut, eine lauffähige Version zu haben, wenn sich mal jemand von außen einloggen soll zum Nachschauen / Aushelfen etc.
Deswegen habe ich da erst an andere Möglichkeiten gedacht.
Hallo, ja klar geht das auch
am 29.05.2015 - 18:07 Uhr
Hallo,
ja klar geht das auch bei einem richtigen Hoster. Das kannst Du Dir auch bei Host Europe zusammenklicken. Sublevel-Doamin anlegen (test.deinedomain.com oder was auch immer) und auf dein Verzeichnis zeigen lassen.
Für vhosts unter xampp, also apache, findest du hier die notwendigen informationen http://httpd.apache.org/docs/2.4/vhosts/examples.html
Gruß
Christian
Don't code today what you can't debug tomorrow
Ariya Hidayat
Achso, mehr ist das nicht?
am 01.06.2015 - 11:56 Uhr
Achso, mehr ist das nicht? Hätte mir vielleicht vorher anschauen sollen, was vHosts eigentlich ist. Vielen Dank für den Link!
Ok, Sub-Domain würde gehen, aber eine andere Frage wäre dann, wie das mit dem Blockieren über robots.txt wäre? Derzeit blocke ich das Unterverzeichnis, aber funktioniert es auch, wenn der Zugriff darauf nicht über die richtige Domain, sondern über die Sub-Domain erfolgt? Von da ausgesehen gäbe es dann ja kein Unterverzeichnis und darin läge auch eine eigene robots.txt, aber das wäre ja schon ein Schritt zu weit.
[edit]
An einer anderen Stelle wurde empfohlen, Verzeichnisschutz einzurichten, was dann auch auf die Sub-Domain Auswirkung hätte und sowieso eine besser Schutzmaßnahme sein soll, als die robots.txt.
[/edit]