| 

.NET C# Java Javascript Exception

0
Hallo ich habe ein Problem mit einem redirect der durch die .htaccess erfolgen soll.
Ich habe ein php skript das mir aus einer normalen URL eine gekürzte Url erstellt und dann mit id und longurl in die Datenbank speichert.
z.B wird aus http://www.google.de, xyz.com/1.

DIE gekürtze URL wird wie folgt erstellt:
function getShortenedURLFromID($integer, $base = ALLOWED_CHARS) {
$length = strlen($base);
while ($integer > $length - 1) {
$out = $base[fmod($integer, $length)] . $out;
$integer = floor($integer / $length);
}
return $base[$integer] . $out;
}

Wenn ich also jetzt die xyz.com/1 aufrufe soll wieder auf http://www.google.de/ umgeleitet werden. Diese Umleitung passiert eigentlich in der redirect.php.
Dort werden die Daten aus der Datenbank gelesen und an die richtige URL umgeleitet.
Das Problem ist jetzt folgendes:
Ich werde nicht weitergeleitet und es passiert nichts. Die redirect.php wird nicht angesprochen so das ich nicht weiß wo der fehler ist.
Die htaccess sieht wie folgt aus:
DirectoryIndex index.php

# remove the next 3 lines if you see a 500 server error
#php_flag register_globals off
#php_flag magic_quotes_gpc off
#php_value display_errors 0

FileETag none
ServerSignature Off

Options All -Indexes

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^shorten/(.*)$ shorten.php?longurl=$1 [L]
RewriteRule ^([0-9a-zA-Z]{1,6})$ redirect.php?url=$1 [L]
</IfModule>
News:
22.07.2011
Gast
3 1 4
so hat sich erledigt...läuft jetzt...fehler war nicht in der Anweisung..die war so richtig..
In der redirect.php war der Fehler..
Danke an alle!!
– Gast 25.07.2011
2 Antworten
1
Probier doch mal

RewriteRule ^([0-9a-zA-Z]{1,6})$ http://xyz.com/redirect.php?url=$1 [L]


oder

RewriteRule ^([0-9a-zA-Z]{1,6})$ http://xyz.com/redirect.php?url=$1 [R=302,L]
22.07.2011
Matthias Hlawatsch 13,2k 4 9
hilft nicht weiter...komme trotzdem nicht weiter...werde nicht weitergeleitet
– Gast 22.07.2011
Hm, schade. Hintegrund des Vorschlags war übrigens die Überlegung (hatte vorhin nicht mehr Zeit), dass der Apache die Ziel-URL möglicherweise als lokalen Dateisystem-Pfad interpretiert, wobei dann natürlich kein Query-Parameter mehr möglich wäre. Deshalb der Ansatz, ihm eine absolute Zeil-URL zu geben.
Was kommt denn überhaupt als Antwort vom Server? Ein 404-Fehler? Schau mal in die access.log und poste ein paar beispielhafte Zeilen von dort für die Requests, die nicht wie gewünscht laufen. Und falls in der error.log was steht, wäre das natürlich auch interessant.
Matthias Hlawatsch 22.07.2011
wenn ich das ganze am firefox ausprobiere, dann bleibt oben die URL gleich(http://xyz.com/1) und die Seite ist leer und bleibt leer
Wenn ich das ganze bei dem Internet Explorer ausprobiere, dann werde ich zurück auf die startseite geleitet....
– Gast 22.07.2011
1
Erstmal was kleines vorneweg, hast du bei folgenden Zeilen die führenden Rauten entfernt UND den Apache neu gestartet?

#LoadModule rewrite_module modules/mod_rewrite.so
#AddModule mod_rewrite.c

Falls nicht, werden deine Conditions nicht geladen, weil <IfModule mod_rewrite.c> false ist. Je nachdem wo du die die Rewrite-Condition geschrieben hast (also htaccess oder apache-conf) musst du ebenfalls den apache neustarten. Bei der conf isses definitiv so, bei htaccess weiß ich es leider nicht genau.

Nun zu deinen Rules:
1. RewriteRule ^shorten/(.*)$ shorten.php?longurl=$1 [L]
2. RewriteRule ^([0-9a-zA-Z]{1,6})$ redirect.php?url=$1 [L]

hm, schreib mal bitte ein Beispiel auf, auf welche URLs die Rule reagieren soll, denn ich bin mir nicht sicher, ob das tut, was es soll. Du hast hier zwei Rules, die auf den ersten Blick nicht so richtig aufeinander passen. Nach deiner Beschreibung würde ich auf sowas wie http://www.deinedomain.de/xyz.com/1 schließen, ist das korrekt?
22.07.2011
DevConfusion 149 1 3
also ich habe hier ein URL shortener der auf der Seite http://sqz.to/ zu finden ist. dort gibt es ein eingabe formular das an der shorten.php abgearbetet wird...dort wird eine kurzurl erstellt die URL ist dann so: http://sqz.to/1
– Gast 22.07.2011
ok, dann versuchs mit der zweiten rule mal wie folgt:

RewriteRule ^([0-9a-zA-Z]+)$ redirect.php?url=$1 [L]

Bin mir nicht sicher, ob deine Syntax "{1,6}" funktioniert. Konnte Sie so bisher nirgends finden (bspw. http://www.modrewrite.de/mod-rewrite/syntax/).
DevConfusion 22.07.2011
Das sollte eigentlich nicht das Problem sein. Die Multiplicity-Angabe ist ein Standard-Feature bei RegEx. Hier ist ein Link, bei dem diese Möglichkeit explizit auch im Zusammenspiel mit RewriteRule genannt wird:
http://www.webforgers.net/mod-rewrite/mod-rewrite-syntax.php
Matthias Hlawatsch 22.07.2011
hm, ok. Was sagt denn das Log?
DevConfusion 22.07.2011
hab jetzt kein zugriff zu der log datei...werde montag mal checken..Danke schon mal..
– Gast 23.07.2011

Stelle deine Apache-Frage jetzt!