web-dev-qa-db-fra.com

Comment puis-je rediriger exemple.com/nomutilisateur vers l'application Instagram directement ouverte à partir d'un lien profond?

J'essaie de rediriger de example.com/username​ vers un lien profond Instagram instagram://user?username=anyusername

Voici mon code htaccess

RewriteEngine On
RewriteBase /

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

Mais il redirige vers 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]

De côté: Vous avez un espace erroné dans le CondPattern dans la directive RewriteCond. Cela entraînera une erreur 500 immédiate, donc je suppose que cela n’est pas présent dans votre code actuel et qu’il s’agit simplement (en quelque sorte) d’une faute de frappe dans votre question? Il convient de lire ^(www\.)?example\.com (la suppression de $ final permet à la directive de faire correspondre les noms d'hôtes qualifiés complets se terminant par un point).

Cependant, comme vous le constatez, cela ne sera pas redirigé comme prévu de toute façon. mod_rewrite (plus précisément mod_rewrite et non Apache en général) valide le schéma (le cas échéant) sur la substitution . S'il ne s'agit pas d'un liste courte prédéfinie de schémas et ne commence pas par une barre oblique, il est considéré comme un relatif URL mod_rewrite préfixe ensuite le schéma et le nom d'hôte de la demande, ce qui entraîne la redirection mal formée que vous rencontrez.

(J'imagine aussi que vous n'avez pas besoin du préfixe slash sur le nom d'utilisateur, qui provient de la variable de serveur REQUEST_URI??)

Au lieu de cela, vous pouvez utiliser une directive mod_alias RedirectMatch, qui ne valide pas le schéma et envoie l'URL telle qu'elle est écrite. Par exemple:

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

Cependant, cela ne vérifie pas le nom d'hôte sur la demande, comme vous le faisiez avec mod_rewrite. Serait-ce une exigence? Avez-vous plusieurs domaines sur ce compte?

En outre, ces navigateurs ne reconnaîtront probablement pas ces URL, si cela pose un problème.

Référence:


Consultez également cette question connexe si vous rencontrez des problèmes avec l'index de répertoire:
Mon site web continue de rediriger ses messages vers le compte "index.php" de l'application Instagram

2
MrWhite