it-swarm.com.de

Wie kann ich example.com/username zu einer Instagram-App umleiten, die direkt über einen Deep Link geöffnet wurde?

Ich versuche, von example.com/username​ zu Instagram-Deep-Link instagram://user?username=anyusername umzuleiten.

Hier ist mein Zugangscode

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^(www\.)? example\.com$ [NC]
RewriteRule ^ instagram://user?username=%{REQUEST_URI} [R=301,L,NE]

Aber es leitet weiter zu http://example.com/instagram://user?username=/instagram://user

2
Bangladesh 71
RewriteCond %{HTTP_Host} ^(www\.)? example\.com$ [NC]
RewriteRule ^ instagram://user?username=%{REQUEST_URI} [R=301,L,NE]

Nebenbei: Sie haben ein falsches Leerzeichen in der CondPattern in der RewriteCond Direktive. Dies führt zu einem sofortigen 500-Fehler. Ich gehe also davon aus, dass dieser in Ihrem aktuellen Code nicht vorhanden ist und nur (irgendwie) ein Tippfehler in Ihrer Frage ist. Es sollte ^(www\.)?example\.com lauten (das Entfernen des abschließenden $ ermöglicht es der Direktive, vollqualifizierten Hostnamen zu entsprechen, die mit einem Punkt enden).

Wie Sie jedoch feststellen, wird dies ohnehin nicht wie beabsichtigt umgeleitet. mod_rewrite (speziell mod_rewrite und nicht Apache im Allgemeinen) validiert das Schema (falls vorhanden) auf Substitution. Wenn es nicht zu einer vordefinierten kurzen Liste von Schemata gehört und nicht mit einem Schrägstrich beginnt, wird es als relativ URL angesehen. mod_rewrite stellt dann das Schema und den Hostnamen der Anforderung voran, was zu einer fehlerhaften Umleitung führt.

(Ich stelle mir auch vor, Sie benötigen kein Schrägstrich-Präfix für den Benutzernamen, der von der Servervariablen REQUEST_URI stammt?)

Stattdessen könnten Sie eine mod_alias RedirectMatch -Direktive verwenden, die das Schema nicht validiert und die URL wie geschrieben sendet. Zum Beispiel:

RedirectMatch 302 /(.+) instagram://user?username=$1

Dies überprüft jedoch nicht den Hostnamen auf der Anfrage, wie Sie es bei mod_rewrite getan haben. Wäre das eine Voraussetzung? Haben Sie mehrere Domains auf diesem einen Konto?

Außerdem werden solche URLs von Desktop-Browsern wahrscheinlich nicht erkannt, wenn dies ein Problem darstellt.

Referenz:


Siehe auch diese verwandte Frage, wenn Sie Probleme mit dem Verzeichnisindex haben:
Meine Website wird weiterhin auf das Konto "index.php" in der Instagram-App umgeleitet

2
MrWhite