Weiterleitung Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
besucher
bieten
code
controller
datei
header
hobby
hoffnung
http
index
machen
projekt
route
routing
sinn
umleitung
url
versuch
weiterleitung
ziel
-
Hallo,
ich habe noch ein Problem und zwar egal von welcher Domain ich komme ich werde immer in die /page/index.php weitergeleitet was der folgende Script auch macht.
Ich bräuchte es noch so, das wenn ich von einer bestimmten Domain komme bsp:
http://abc.de und dann folgendes eingebe http://abc.de/33
dass ich dann hier rauskomme: http://abc.de/folder1/folder2/33
gebe ich dann nur http://abc.de dann sollte man ganz normal weitergeleitet werden.. wie hier:
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} ^/index\.(html|htm|php)$ RewriteRule index\.(html|htm|php)$ /site/index.php [R,L] RewriteCond %{REQUEST_URI} ^/$ RewriteRule (.*)$ /site/index.php [R,L] DirectoryIndex index.php index.html index.htm
Gruß & Danke -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich kann dir nicht so ganz folgen.
Kommt der Besucher von einer externen Seite oder soll deine Angabe mit abc.de bedeuten, dass es dieselbe Seite ist?
Was bezweckst du damit?
Dein versuch jemanden umzuleiten nennt man Routing.
Und ich würde dir das lieber mit z. B. PHP empfehlen umzusetzen, anstatt mod_rewrite dafür zu verwenden.
Bei den PHP-Frameworks bieten Zend Framework und Laravel als Beispiel Routing an und ist auch recht einfach anzuwenden.
Ob jetzt Drupal, CodeIgniter usw. das auch bieten, kann ich nicht sagen, aber mich würde es wundern wenn nicht.
Hast du dir ansonsten schon einmal reguläre Ausdrücke dafür angeschaut? Es gibt auch Online-Editoren, um deinen Versuch zu testen.
Speziell in deinem Fall für die HTACCESS.
-
Hallo,
ja ungefähr, also wenn jemand folgendes eingippt:
http://abc.de/33
dann sollte er hier im Verzeichniss landen:
http://abc.de/folder1/folder2/33
weiterhin sollte nur der Link im Browserfenster sichtbar sein:
http://abc.de/33
aber er befindet sich schon in den Unterordner.. http://abc.de/folder1/folder2/33
Gruß :)
-
Da will ich dir mal keine Hoffnung machen.
Erstens geht das nicht ohne einen Frame zu benutzen.
Und selbst wenn, was soll das bringen?
Warum soll der Besucher nicht die URL sehen?
Entschuldige, aber das macht alles keinen Sinn mit dieser Geheimniskrämerei.
Wie gesagt, wenn du das mit vernünftigen Routen löst z. B. über die oben genannten Frameworks oder indem du dir selber einen Controller schreibst, der dieses Routing übernimmt, kannst du deine Inhalte entsprechend in deine "gewünschte" URL laden.
Sprich http://www.abc.de/33 wird aufgerufen und das Skript lädt sämtliche Daten aus dem Unterverzeichnis in diese Datei und gibt sie dann aus.
Eventuell wird dein Vorhaben deutlicher wenn du Klartext reden könntest und den Sinn dahinter erklären kannst. -
kgreen schrieb:
Soweit ich die Frage des TE verstanden habe ist das sehrwohl möglich.
Da will ich dir mal keine Hoffnung machen.
Erstens geht das nicht ohne einen Frame zu benutzen.
kgreen schrieb:
Er sieht doch eh eine URL, aber eben nicht den Namen der Datei, wie sie am Server liegt.
Warum soll der Besucher nicht die URL sehen?
kgreen schrieb:
Das ist vollkommen unnötig und mit einer einfachen
Wie gesagt, wenn du das mit vernünftigen Routen löst z. B. über die oben genannten Frameworks oder indem du dir selber einen Controller schreibst, der dieses Routing übernimmt, kannst du deine Inhalte entsprechend in deine "gewünschte" URL laden.
-Datei mit geeigneten Regeln sehr viel einfacher möglich..htaccess
kgreen schrieb:
Vermutlich ist der Sinn der Frage für eine Lösung gar nicht nötig.
Eventuell wird dein Vorhaben deutlicher wenn du Klartext reden könntest und den Sinn dahinter erklären kannst.
@TE:
Versuch mal bei deinen Rewrite-Regeln das
wegzulassen.R
Also z.b. so (ungetestet):RewriteRule ^$ /seite/index.php [L] RewriteRule ^([^/]*)$ /verzeichnis/$1.php [L,QSA]
-
hackyourlife schrieb:
Das ist vollkommen unnötig und mit einer einfachen
-Datei mit geeigneten Regeln sehr viel einfacher möglich..htaccess
Das ist aber eher die Ausnahme als die Regel. In keinem unserer Projekte der letzten Jahre haben wir jemals eine .htaccess mehr zu tun gegeben, als nötig.
Selbst kleinste Projekte mit nur zwei oder drei Controllern haben ein Routing über PHP erfahren.
Ich will damit nicht sagen, dass es falsch ist, deine Lösung funktioniert übrigens so wie du sie angeschrieben hast. Die erste Regel fällt selbstverständlich durch, aber die Zweite leitet auf das definierte Verzeichnis um. Aber auch wenn es einem nicht zusteht hier jemanden zu belehren, es hilft ihm für die Zukunft nicht viel weiter solch einen Workaround anzuwenden.
Wenn es nur ein Hobby ist ... dann bin ich jetzt ruhig, aber sollte es mal etwas ernsteres werden, dann bitte lieber Routing mit PHP anschauen.
Ich will ja nur nicht, dass der Junge auf die schiefe Bahn gerät. -
Ja. Das Problem ist ich habe einen Urlkürzer gebe ich eine laaaange URL ein dann wird diese gekürzt soweit ja so gut. Nur habe ich den URL kürzer in folgende Ordner ../url/kurz/ jetzt wenn ich eine URL gekürzt habe dann macht es mir folgendes daraus: http://www.link.de/url/kurz/22 jetzt wollte ich das ich diese so aufrufen kann http://www.link.de/22
Gruß -
Hallo
einen "Urlkürzer" aka Short-URL Service
würde ich nicht mit .htaccess direkt machen, sondern mit
als Weiterleitungheader("Location .... ");
Du Speicherst die Link-Nummer (ID) und den langen Link (Ziel-URL) in einer Datenbank (oder CSV)
und kannst dann bei Aufruf http://abc.de/33 per .htaccess umleiten auf z.B. umleitung.php?id=33
RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} (.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]*)$ /script/umleitung.php?id=$1 [L]
In der umleitung.php dann aus der Datenbank den langen Link (Ziel-URL) zur $_GET['id'] auslesen
und per
zu dieser langen Link (Ziel-URL) weiterleiten.header("Location .... ");
if (!empty($_GET['id'])) { $run_id = trim($_GET['id']); $sql = "SELECT * FROM link_tabelle WHERE id = '".$run_id."' LIMIT 1"; $res = mysql_query($sql); $row = mysql_fetch_row($res); $long_url = $row[1]; header("Location:".$long_url); exit(); }
also .htaccess nicht für jeden einzelnen Link, sondern nur zur übergabe der ID an ein PHP-Script
und die Weiterleitung zur Ziel-Adresse dann mit header() ...
-
Wie groß ist dein Projekt?
Ist es "noch" ein Hobby oder wird das mal etwas, was länger Bestand haben sollte?
Such bei Google einfach mal nach "PHP Routing". Du kannst auch noch "Tutorial" hinten dran hängen.
Ziemlich am Anfang findest du ein kleines Tutorial, ca. 19 Minuten, wie man sich ein kleines Routing in PHP selber bastelt, wenn man kein Framework verwendet.
Sollen da evtl. noch mehrere Routen hinzukommen?
Egal wie, ich würde lieber jetzt damit anfangen, dass ganze auf stabile Beine zu bekommen, bevor du dich nachher tagelang mit dem Umbau beschäftigen musst. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage