URL Shortener
Forumsregeln
Bitte achtet hier besonders darauf, nicht abzuschweifen.
Wir werden hier verstärkt moderieren und ggf. Dinge in andere Foren (Smalltalk etc.) auslagern.
Bitte achtet hier besonders darauf, nicht abzuschweifen.
Wir werden hier verstärkt moderieren und ggf. Dinge in andere Foren (Smalltalk etc.) auslagern.
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
URL Shortener
Hallo WebEdition'er,
ich hätte gerne für WebEdition eine Funktion, die es ermöglicht, URL's zu verkürzen.
Beispiel: http://www.abc.de/rubrik/unterrubrik/seinetname.php soll über http://www.abc.de/ID aufgerufen werden können. Also einen URL-Shortener wir z.B. bit.ly intern.
Die ID könnte die interne WebEdition-ID des jeweiligen Dokumentes sein. Mein grober Plan: eine .htaccess fängt das irgenwie ab, leitet auf ein Skript und das holt sich die URL zur ID und leiten dann weiter.
Hat dazu eventuell jemand eine Idee, wie man das umsetzen kann?
ich hätte gerne für WebEdition eine Funktion, die es ermöglicht, URL's zu verkürzen.
Beispiel: http://www.abc.de/rubrik/unterrubrik/seinetname.php soll über http://www.abc.de/ID aufgerufen werden können. Also einen URL-Shortener wir z.B. bit.ly intern.
Die ID könnte die interne WebEdition-ID des jeweiligen Dokumentes sein. Mein grober Plan: eine .htaccess fängt das irgenwie ab, leitet auf ein Skript und das holt sich die URL zur ID und leiten dann weiter.
Hat dazu eventuell jemand eine Idee, wie man das umsetzen kann?
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: URL Shortener
hallo bolleone,
dein plan klingt doch schon gut.
kannst du auch recht simpel per php lösen. mit den funktionen id_to_path() und header() sollte das gut umzusetzen sein.
einfaches code snippet:
anm. 1: damit id_to_path() funktioniert, musst du dich natürlich im kontext einer dynamischen webEdition seite befinden.
anm. 2: vor header() darf keine ausgabe erfolgen (sh. php doku).
cheers,
sascha
dein plan klingt doch schon gut.
kannst du auch recht simpel per php lösen. mit den funktionen id_to_path() und header() sollte das gut umzusetzen sein.
einfaches code snippet:
Code: Alles auswählen
$url = id_to_path($_REQUEST['id']);
header("Location: $url");
anm. 2: vor header() darf keine ausgabe erfolgen (sh. php doku).
cheers,
sascha
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: URL Shortener
Das ist schon mal eine grandiose Lösung. Damit kann ich schon mal URL's nach dem Schema "www.abs.de/name.php?id=ID" oder "/?id=ID" abfangen. Bekommt man das irgenwie dann noch hin, dass man auch URL's nach dem Schema "www.abc.de/ID" handln kann...?
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: URL Shortener
wie du selbst schon geschrieben hast, ist hier htaccess dein freund. einfach eine rewrite rule zusammenstellen, dann funkt das schon.
hth,
sascha
hth,
sascha
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: URL Shortener
Hallo Sascha,
also, das habe ich bin jetzt:
.htaccess:
Im Template:
Leider tuts das nicht. Dieser Aufruf hier klappt hingegen: http://www.muebri.de/?uid=1249
Da mache ich doch bestimmt irgendeinen Denkfehler, oder?
also, das habe ich bin jetzt:
.htaccess:
Code: Alles auswählen
RewriteEngine on
RewriteRule ^http://www.muebri.de/[0-9]+$ http://www.muebri.de/index.php?uid=$1 [NC,L]
Code: Alles auswählen
<we:ifVarSet name="uid" type="request" doc="top">
<?php
$url = id_to_path($_REQUEST['uid']);
$surl = "http://www.muebri.de".$url;
header("Location: $surl");
?>
</we:ifVarSet>
Da mache ich doch bestimmt irgendeinen Denkfehler, oder?
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: URL Shortener
Hallo WebEditioner,
ich habe die Lösung jetzt gefunden:
.htaccess:
In das Master-Template kommt dann als erstes dieser Code:
Funktioniert wunderbar. Demo: http://www.muebri.de/1249
ich habe die Lösung jetzt gefunden:
.htaccess:
Code: Alles auswählen
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]+)/?$ /index.php?uid=$1 [L]
Code: Alles auswählen
<we:ifVarSet name="uid" type="request" doc="top">
<?php
$url = id_to_path($_REQUEST['uid']);
$surl = "http://www.muebri.de".$url;
header("Location: $surl");
?>
</we:ifVarSet>
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Re: URL Shortener
Hallo bolleone,
damit zerschiesst Du Dir aber eventuelle SEO-URLs, denn diese sind auch darauf angewiesen, nicht vorhandene URLs abzufangen. Wenn Du diese hier nicht im Einsatz hast, kein Problem. Andernfalls sollte in Deiner htaccess auch folgendes klappen:
Ausserdem solltest Du in Deiner Vorlage die uid Variable nicht einfach übernehmen. Also z.B. sowas machen:
Auch wenn id_to_path sicher programmiert sein wird, ist es immer gut, Request Variablen so früh wie möglich zu validieren.
damit zerschiesst Du Dir aber eventuelle SEO-URLs, denn diese sind auch darauf angewiesen, nicht vorhandene URLs abzufangen. Wenn Du diese hier nicht im Einsatz hast, kein Problem. Andernfalls sollte in Deiner htaccess auch folgendes klappen:
Code: Alles auswählen
RewriteEngine on
RewriteRule ^/[0-9]+$ index.php?uid=$1
Code: Alles auswählen
<we:ifVarSet name="uid" type="request" doc="top">
<?php
$url = id_to_path(abs($_REQUEST['uid']));
$surl = "http://www.muebri.de".$url;
header("Location: $surl");
?>
</we:ifVarSet>
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: URL Shortener
Hallo,
Noch ein Tipp bzgl. .htaccess. Besser du schreibst:
Dann gibt es keine 500er Meldung vom Webserver, falls mod_rewrite mal nicht zur Verfügung steht.
Bzgl. id_to_path():
HIer wird in der Funktion intval($id) aufgerufen. Das sollte soweit also safe sein.
Sidenote: Interessant ist, dass id_to_path() auch ein Array als Parameter akzeptiert. Daher hilft abs() auch nicht wirklich weiter. In dem Fall ist es wohl besser man überprüft ob $url ein Array ist und berücksichtigt ggf. nur den ersten Rückgabewert für die Weiterverarbeitung.
Liebe Grüße,
Sascha
Noch ein Tipp bzgl. .htaccess. Besser du schreibst:
Code: Alles auswählen
<ifModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^/[0-9]+$ index.php?uid=$1
</ifModule>
Bzgl. id_to_path():
HIer wird in der Funktion intval($id) aufgerufen. Das sollte soweit also safe sein.
Sidenote: Interessant ist, dass id_to_path() auch ein Array als Parameter akzeptiert. Daher hilft abs() auch nicht wirklich weiter. In dem Fall ist es wohl besser man überprüft ob $url ein Array ist und berücksichtigt ggf. nur den ersten Rückgabewert für die Weiterverarbeitung.
Liebe Grüße,
Sascha
Re: URL Shortener
Hi Sascha,
auch wenn in id_to_path selbst den Wert prüft, verlasse ich mich ungern darauf sondern prüfe alle eingehenden Variablen gerne so früh wie möglich selbst. Ich weiss ja nie, was in id_to_path in Zukunft gemacht wird. Aber vielleicht ist das einfach Geschmackssache bzw. fehlt eine verbindliche Handhabe / Richtlinie, wo webEdition intern Variablen geprüft werden.
Deine Sidenote habe ich nicht verstanden. Ich habe aber eine eigene:
eigentlich sollte id_to_path gar nicht genutzt werden! Von dem Einsatz interner webEdition Funktionen ist immer abzuraten. Das Beispiel liese sich auch mit einem Aufruf von <we:url id="$id" to="global" nameto="url"> lösen, natürlich muss vorher die ID aus der request uid in eine (globale) id überführt werden.
auch wenn in id_to_path selbst den Wert prüft, verlasse ich mich ungern darauf sondern prüfe alle eingehenden Variablen gerne so früh wie möglich selbst. Ich weiss ja nie, was in id_to_path in Zukunft gemacht wird. Aber vielleicht ist das einfach Geschmackssache bzw. fehlt eine verbindliche Handhabe / Richtlinie, wo webEdition intern Variablen geprüft werden.
Deine Sidenote habe ich nicht verstanden. Ich habe aber eine eigene:
eigentlich sollte id_to_path gar nicht genutzt werden! Von dem Einsatz interner webEdition Funktionen ist immer abzuraten. Das Beispiel liese sich auch mit einem Aufruf von <we:url id="$id" to="global" nameto="url"> lösen, natürlich muss vorher die ID aus der request uid in eine (globale) id überführt werden.
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: URL Shortener
Hey,
Cheers,
Sascha
Mein Ansatz ist, dass es hier wenig Sinn macht Eingaben mehrfach zu überprüfen. Irgendwann wird das unperformant.ThomasGoebe hat geschrieben:auch wenn in id_to_path selbst den Wert prüft, verlasse ich mich ungern darauf sondern prüfe alle eingehenden Variablen gerne so früh wie möglich selbst. Ich weiss ja nie, was in id_to_path in Zukunft gemacht wird. Aber vielleicht ist das einfach Geschmackssache bzw. fehlt eine verbindliche Handhabe / Richtlinie, wo webEdition intern Variablen geprüft werden.
Macht nichts. Ist auch nur ein sehr theoretischer Fall .ThomasGoebe hat geschrieben:Deine Sidenote habe ich nicht verstanden.
Full ACK!ThomasGoebe hat geschrieben:eigentlich sollte id_to_path gar nicht genutzt werden! Von dem Einsatz interner webEdition Funktionen ist immer abzuraten.
Guter Einwand! Die somit fast PHP freie Lösung könnte demnach wie folgt aussehen (ungetestet):ThomasGoebe hat geschrieben:Das Beispiel liese sich auch mit einem Aufruf von <we:url id="$id" to="global" nameto="url"> lösen, natürlich muss vorher die ID aus der request uid in eine (globale) id überführt werden.
Code: Alles auswählen
<we:ifVarSet name="uid" type="request">
<we:setVar to="global" nameto="id" from="request" namefrom="uid" />
<we:url id="$id" to="global" nameto="url">
<?php
header('Location: http://www.muebri.de' . $url);
?>
</we:ifVarSet>
Sascha
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: URL Shortener
Wunderbar, tuts
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
-
- Senior Member
- Beiträge: 601
- Registriert: So 4. Jul 2004, 00:24
- Wohnort: Düsseldorf
- Kontaktdaten:
Re: URL Shortener
...AAAABER:
tuts - wie Ihr vermutet habt - nicht in Kombination mit SEO-URL's:
Das produziert dann einen dauerhaften Fehler. Bin mir aber sicher, dass der Code nicht korrekt ist...?
Kann man irgendwie rules so kombinieren, dass das läuft?
tuts - wie Ihr vermutet habt - nicht in Kombination mit SEO-URL's:
Code: Alles auswählen
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /webEdition/redirectSEOurls.php
RewriteRule ^([0-9]+)/?$ /index.php?uid=$1 [L]
</ifModule>
Kann man irgendwie rules so kombinieren, dass das läuft?
multimediadesign.net · Atelier für Kommunikation
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Grimmstr. 3 · 40235 Düsseldorf
Telefon ++49-211-4981791 · Telefax ++49-211-4981792
http://www.multimediadesign.net · bolle@multimediadesign.net
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste