2017-01-25 4 views
-1

Ich erstelle eine URL-Kürzungs-Webanwendung mit PHP. Ich kann kürzere URLs erfolgreich generieren. Aber ich kann die Benutzer nicht umleiten, wenn sie die verkürzte URL aufrufen. Wenn der Benutzer https://example.com/aBc1X eingibt, möchte ich die aBc1X erfassen. Ich werde dann die Datenbank abfragen, um die ursprüngliche URL zu finden und umleiten.URL-Slug mit PHP extrahieren. Erstellen eines URL-Kürzers

Meine Frage ist, Wie kann ich die aBc1X von der oben genannten URL extrahieren?

P.S. Ich benutze entweder Apache oder Nginx.

+0

Ich würde [YOURLS] (https://github.com/YOURLS/YOURLS) empfehlen. Sparen Sie etwas Zeit. – wogsland

+0

@wogsland Ich baue dies als ein Projekt in der Schule. –

Antwort

1

Zwei Dinge, die Sie tun können. Zuerst müssen Sie den gesamten Verkehr zu einer Datei umleiten, die Ihre Router-Datei sein wird. Sie können dies tun, indem Sie einige Regeln in die .htaccess-Datei einfügen. Ich werde einige allgemeine Regeln setzen dort mit (dieses von Wordpress kommen) zu starten:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^redirect\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /redirect.php [L] 
</IfModule> 

Sie sagen, dass überall URL verweist auf die nicht-Datei oder Verzeichnis-Datei redirect.php laufen. Vielleicht möchten Sie diese Einstellungen an Ihre Bedürfnisse anpassen.

Dann in redirect.php können Sie url erfassen, indem Sie in $_SERVER['REQUEST_URI'] suchen. Für die URL http://example.com/any-url-i-want hätten Sie $_SERVER['REQUEST_URI'] == '/any-url-i-want.

Jetzt ist das einzige, was Sie brauchen, um die URL in der Datenbank zu finden, und eine Umleitung zu tun. Ich denke, Sie können String-Operationen an diesem Punkt entweder mit parse_url, reguläre Ausdrücke oder einfache Zeichenfolge schneiden.

+0

Danke für Ihre Antwort. Gibt es eine Möglichkeit, dies auf Ngnix zu tun? –

+0

Ich habe nicht viel Erfahrung mit Nginx. Aber ich denke, dass Sie in der Lage sein sollten, gleichwertige Regeln für nginx zu konvertieren oder zu schreiben. Dieser kurze Artikel sollte http: // nginxlibrary helfen.com/wordpress-permalinks / – Grawer

0

Sie möchten verwenden;

$_SERVER['REQUEST_URI']; 

Das wird zurückgeben, was Sie suchen.

können Sie die URL

$url = "https://example.com/aBc1X"; 
$path = ltrim(parse_url($url, PHP_URL_PATH), '/'); 

documentation here

+0

Ich denke, OP bedeutet, dass der Benutzer die URL als Eingabe für ein Formular eingibt, nicht die Seite, auf der sich der Benutzer befindet. – wogsland

+0

Das ist nicht die Art, wie ich es gelesen habe - _ "Ich bin in der Lage, kürzere URLs erfolgreich zu generieren. Aber ich bin nicht in der Lage, die Benutzer umleiten, wenn sie die verkürzte URL besuchen." _ – Tom

+0

Meine Antwort vermutet, dass das OP alle generiert hat Die URL wird jedoch von einem PHP-Skript verarbeitet. – Tom

0

siehe Dann wird $pathaBc1X zu analysieren, wie gewünscht. Beachten Sie, dass jede Abfrage, die auf ? folgt, in dieser Lösung ausgelassen wird. Für weitere Details werfen Sie einen Blick auf die documentation of the parse_url function.

+0

$ Pfad enthält das "/" am Anfang, so dass möglicherweise abgeschnitten werden muss. –

+0

@BA_Webimax Danke - behoben! – wogsland

Verwandte Themen