2017-12-07 11 views
1

Hallo Leute. Ich fing an, meinen eigenen "URL shortener" zu programmieren. Die Grundidee ist, dass Sie example.com/12345 verwenden, um auf eine andere URL umzuleiten. Dieses "Matching" erfolgt durch Verwendung von .htaccess, um Dinge in Richtung eines Skripts umzuleiten, das (für uns jetzt irrelevant) Dinge tut.Ist es möglich, die ursprüngliche URL nach einer 302 .htaccess RedirectMatch zu erhalten?

Meine .htaccess sieht derzeit wie folgt aus:

RedirectMatch 302 ^/\w{5}$ /redir.php 

Die Umleitung entspricht einer beliebigen Zeichenkette mit genau 5 und sendet sie zu meinem PHP-Skript, wo die eigentliche Umleitung auf die erweiterte URL stattfinden. Das einzige Problem ist, dass ich keine passende Methode gefunden habe, die ursprüngliche URL, die passende URL, in eine Variable zu bekommen.

Als Nebenbemerkung das Ganze auf einem VPS von mir mit minimalen Kenntnissen eingerichtet geschieht, so dass, wenn dieses Problem von einem fehlenden config ($ _SERVER [ ‚HTTP_REFERER‘] nicht funktioniert) stammt, dann erwarten Meine Konfigurationen sind nicht 100% korrekt und nach Standards.

EDIT: von RedirectMatch zu RewriteRule geändert, funktioniert immer noch nicht.

RewriteRule ^\w{5}$ /redir.php [R,L] 
+0

Stattdessen anstelle eines int so etwas wie Base62 verwenden und dekodieren sie in etwas bearbeitbar wie eine Datenbank-ID. Diese Bibliothek wird alles tun. http://hashids.org/ –

+0

Außerdem ist die Entropie in 10000 bis 99999 nicht viel. Und Zahlen sind einfach zu durchqueren. –

+0

Oh und um die Frage zu beantworten, verwenden Sie '$ _SERVER ['REQUEST_URI']':/ –

Antwort

1

können Sie die folgende Regel verwenden:

RewriteRule ^(\w{5})$ /redir.php?redir=$1 [R,L] 

dies redir die 5 Buchstabenfolge als Abfragezeichen param senden.

$_GET['redir'] 

Edit:: Was Sie in redir.php als zugreifen können Oder wie @LawrenceCherone vorgeschlagen haben, können Sie $_SERVER['REQUEST_URI'] in redir.php verwenden. Aber dafür müssen Sie stattdessen NC Flagge in .htaccess verwenden, wie:

RewriteRule ^(\w{5})$ /redir.php [NC,L] 
+1

Ok das scheint zu funktionieren. Ich mache derzeit keine Weiterleitungen in meinem Skript, so bleibt die Seite auf /redir.php?redir=stuff und JA kann ich das als Variable verwenden, ich hoffe nur, dass wenn ich es mit einer Header-Weiterleitung verwende, wird es nicht angezeigt redir.php überhaupt nur umleiten sofort. Lass uns dann sehen ... Auch danke für den Eingang EDIT: scheint zu arbeiten! –

+0

Oder lassen Sie den Htaccess so wie er ist und verwenden Sie '$ _SERVER ['REQUEST_URI']' in der Datei redir.php .. wie die meisten Frameworks. –

+0

@LawrenceCherone Das hat aus irgendeinem Grund nicht funktioniert. Noch immer nicht sicher warum. –

Verwandte Themen