Seite 1 von 1
Weiterleitung nur bei externen Links, nicht bei internen?
Verfasst: 02.10.2008, 17:25
von theiml
Hallo Ihr!
Gibt es, bzw. kennt jemand eine Möglichkeit, wie man alle externen Links auf eine bestimmte Unterseite zur Hauptseite weiterleiten kann, ohne dass der eigene, interne Link ebenfalls umgeleitet wird?
Geht sowas mit .htacces? Und wenn ja, wie?
Vielen Dank für eure Antworten
Verfasst: 02.10.2008, 18:15
von wolli
Das klingt etwas wirr.
Vielleicht erklärst du mal den Zweck deines Vorhabens
Verfasst: 02.10.2008, 18:22
von theiml
OK nochmal etwas präziser:
Ich habe eine Unterseite, die nur von meiner Homepage aufgerufen werden darf.
Wenn sie jedoch durch einen externen Link aufgerufen wird (z.B. Suchmaschine, oder andere Webseiten), soll sofort automatisch auf meine Startseite weitergeleitet werden.
Re: Weiterleitung nur bei externen Links, nicht bei internen
Verfasst: 02.10.2008, 19:13
von Mork vom Ork
theiml hat geschrieben:Gibt es, bzw. kennt jemand eine Möglichkeit, wie man alle externen Links auf eine bestimmte Unterseite zur Hauptseite weiterleiten kann, ohne dass der eigene, interne Link ebenfalls umgeleitet wird?
Browser liefern in aller Regel die URL der verweisenden Seite bei jeder entsprechenden Anfrage im Protokollkopf mit. Auf diese Angaben kannst du mittels
RewriteCond und der Variablen %{HTTP_xy} zugreifen:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^http://example\.com
RewriteRule ^deine_interne_seite\.html$
https://example.com/ [R=302,L]
Die .htaccess legst du in das entsprechende Verzeichnis; ist es ein anderes als das Wurzelverzeichnis /, müsstest du RewriteBase entsprechend anpassen (sowie natürlich die anderen Angaben).
IMHO wäre allerdings ein Forbidden als Antwort passender ([F,L] statt [R=302,L]), ließe sich auch über die Startseite ausgeben, sofern sie ein Skript ist.
Verfasst: 03.10.2008, 10:07
von theiml
Hm irgendwie krieg ichs nicht gebacken. Kenn mich nicht gut aus mit Rewrite.
Ich habe den Code jetzt folgendermaßen angepasst:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^
https://meine-hauptseite.de
RewriteRule ^meine_unterseite\.html$
https://meine-hauptseite.de/ [R=302,L]
Da ichs nicht ganz verstanden habe, habe ich auch die Variante ausprobiert:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^
https://externe-seite.de
RewriteRule ^meine_unterseite\.html$
https://externe-seite.de/ [R=302,L]
In keinem der beiden Fälle ist irgendetwas passiert.
Verfasst: 03.10.2008, 10:39
von Mork vom Ork
theiml hat geschrieben:RewriteEngine on
RewriteBase
/
RewriteCond %{HTTP_REFERER}
!^https://meine-hauptseite.de
RewriteRule
^meine_unterseite\.html$ httр://meine-hauptseite.de/ [R=302,L]
Das wäre richtig. RewriteCond prüft, ob die verweisende URL nicht (
!) mit httр://meine-hauptseite.de (
https://meine-hauptseite.de) beginnt (
^), anders ausgedrückt: ob von einer externen Seite verwiesen wird. Sollte dem so sein, leitet RewriteRule beim Aufruf von
/meine_unterseite.html auf deine Startseite httр://meine-hauptseite.de/ weiter.
Stellt sich die Frage, warum's nicht will. Setze mal ein Nummernzeichen (#) vor die RewriteCond-Zeile; du kommentierst sie damit aus, so dass jetzt jeder Aufruf von /meine_unterseite.html zur Startseite weitergeleitet werden sollte.
Ist dem nicht so, füge noch eine Zeile blablub ein. Dann muss ein Serverfehler ausgespuckt werden („500 Internal Server Error“), weil der Apache blablub als Option natürlich nicht kennt. Kommt der 500er, funktioniert zumindest die .htaccess. Kommt er nicht, wird die .htaccess gar nicht beachtet.
Dann müsste man weitersehen. Bitte Ergebnisse genau kommentieren und deine verwendete(n) .htaccess zitieren.
Verfasst: 03.10.2008, 11:34
von theiml
Hi!
Also wenn ich RewriteCond auskommentiere, wird astrein auf die Hauptseite weitergeleitet.
Die .htaccess wird also nicht ignoriert und der Fehler muss meines Erachtens an der RewriteCond-Zeile liegen.
Hier nochmal der verwendete Code:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^
https://www.meine-seite.de
RewriteRule ^unterseite\.html$
https://meine-seite.de/ [R=302,L]
Verfasst: 03.10.2008, 12:16
von Mork vom Ork
theiml hat geschrieben:Also wenn ich RewriteCond auskommentiere, wird astrein auf die Hauptseite weitergeleitet.
Das ist doch schon mal gut.
Der Code funktioniert hier, deshalb stelle ich jetzt erstmal eine ganz blöde Frage:
In keinem der beiden Fälle ist irgendetwas passiert.
Wenn du die Seite von deiner aus ansteuerst, soll ja auch nichts passieren. Nur, wenn der Browser in Referer: eine andere (oder gar keine) Domain meldet, wird die Weiterleitung aktiv. Hast du also diese Seite auch wirklich über einen Verweis von einem anderen Server aus aufgerufen?
Verfasst: 03.10.2008, 12:28
von Mamphil
Hi,
wie wäre es mit ein wenig Escaping?
Code: Alles auswählen
RewriteCond %{HTTP_REFERER} !^http:\/\/www\.meine-seite\.de
Und was machst du mit leeren Referrern, wie zum Beispiel Suchmaschinen-Clients?
Mamphil
Verfasst: 03.10.2008, 13:09
von theiml
Hallo,
also ich habe einen Link von einer anderen URL gesetzt. Die kommt jedoch vom gleichen Hoster und dem gleichen Account. Also wohl auch vom gleichen Server.
Mit dem Tipp von Mamphil scheint es jedoch jetzt zu klappen.
Der Grund für die ganze Aktion war, dass ich von meiner Haupseite ein Infofenster per Javascript öffnen lassen will.
Das Infofenster enthält nur Informationen, aber nicht das Template und somit auch nicht die Navigation meiner Homepage.
Jedoch könnte das Infofenster für z.B. Konkurrenten sehr interessant sein.
Mit dem .htacces will ich verhindern, dass eine andere Homepage einen Link direkt auf das Infofenster setzt, ohne dass der User erkennt, dass es sich um meine Homepage handelt.
So wird der User auf die Seite geleitet, von der das Fenster abrufbar ist.
Wenn jetzt jemand über eine Suchmaschine an die URL kommt und diese direkt eintippt, ist das nicht so wild denke ich.
BTW: Wie is das dann mit den Suchmaschinen-Bots? haben die dann überhaupt Zugriff auf das Infofenster?
Verfasst: 03.10.2008, 15:04
von Mork vom Ork
theiml hat geschrieben:Mit dem Tipp von Mamphil scheint es jedoch jetzt zu klappen.
Wundert mich ein wenig, zumal es hier auch ohne Masken geht. Könntest du mal folgende zwei Varianten ausprobieren?
!^http:\/\/www.meine-seite.de
!^http://www\.meine-seite\.de
Der Grund für die ganze Aktion war, dass ich von meiner Haupseite ein Infofenster per Javascript öffnen lassen will.
[…]
BTW: Wie is das dann mit den Suchmaschinen-Bots? haben die dann überhaupt Zugriff auf das Infofenster?
Mal abgesehen davon, dass du das Fenster per Javascript ansteuerst, kein Bot Javascript ausführt und somit kein Bot von der URL erfahren wird, wird's momentan auch deshalb nichts werden, weil Suchmaschinenbots üblicherweise, genau wie beim direkten Eintippen der URL, keine verweisende URL übermitteln. Das lässt sich aber mit einem etwas geänderten URL-Muster beheben:
RewriteCond %{HTTP_REFERER} !^(http:\/\/www\.meine-seite\.de.*|)$
Dann müsstest du nur noch ein normales <a> mit der Info-URL fallenlassen oder die URL per Sitemap übermitteln, und dem Indizieren sollte nichts mehr im Wege stehen.
Verfasst: 03.10.2008, 16:58
von theiml
Hallo Mork vom Ork!
Alle deine neuen Varianten funktionieren ebenfalls.
Und nochwas zum indizieren:
Kann es sein, dass die Bots so einen Link verfolgen können?:
<a href="javascript:Vollbild('
https://www.meine-seite.de/unterseite.html');">
Weil die unterseite.html ist bereits im Index und war meines erachtens auch immer nur so verlinkt.
Gruß, Thomas
Verfasst: 03.10.2008, 17:37
von Mork vom Ork
theiml hat geschrieben:Alle deine neuen Varianten funktionieren ebenfalls.
Huch? Das heißt, die beiden neuen
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^http:\/\/www.meine-seite.de
RewriteRule ^unterseite\.html$
https://meine-seite.de/ [R=302,L]
und
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^http://www\.meine-seite\.de
RewriteRule ^unterseite\.html$
https://meine-seite.de/ [R=302,L]
arbeiten wie gewünscht, aber mein erster Versuch,
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^
https://www.meine-seite.de
RewriteRule ^unterseite\.html$
https://meine-seite.de/ [R=302,L]
tut nix? Du siehst mich rätseln. Will ja nicht deine Zeit verschwenden, aber kannst du die letzte Version nochmals probieren? Denn wenn die beiden anderen funktionieren, muss die letzte es auch. Alles andere zerstört mein Weltbild ;)
Eigentlich nicht, da Javascript. Uneigentlich muss der Indexeintrag irgendwo hergekommen sein … :) Ich täte ihn trotzdem in <a href="
https://www.meine-seite.de/unterseite.html" onclick="Vollbild('
https://www.meine-seite.de/unterseite.html');"> ändern - wobei ich mich dunkel zu erinnern glaube, dass der GoogleBot <a> mit onclick auch vollständig ignoriert.
Verfasst: 03.10.2008, 17:52
von theiml
hi,
Hab jetz rausgefunden woran es lag.
Man muss die Seite immer erst mit F5 refreschen, damit die Änderung in der .htacess erkannt wird.
Jetzt hats auch mit der letzten Version funktioniert!
Danke für die Hilfe!
Verfasst: 04.10.2008, 10:14
von Mork vom Ork
theiml hat geschrieben:Man muss die Seite immer erst mit F5 refreschen, damit die Änderung in der .htacess erkannt wird.
Jetzt hats auch mit der letzten Version funktioniert!
Danke, mein Weltbild ist wieder lotrecht ;)