Use htaccess para redirigir la URL a un enlace profundo específico de la aplicación

Jul 27 2020

Estoy intentando hacer lo siguiente:

El usuario visita la URL con el parámetro de consulta: http://www.example.com/?invite=1234

Luego quiero que estén profundamente vinculados a la aplicación en su dispositivo iOS, para que vayan a: app_name://1234

¿Alguna sugerencia sobre cómo lograr esto en mi .htaccessarchivo?

Intenté esto pero no funciona:

RewriteEngine On # Turn on the rewriting engine

RewriteRule ^invite/(.*)/$ app_name://$1 [NC,L]

Si RewriteRuleno funciona, ¿alguien puede enviarme un código de ejemplo RewriteCondo JavaScript para lograr lo que necesito?

Respuestas

MrWhite Jul 28 2020 at 00:18

No estoy seguro de cómo funcionará esto con el dispositivo iOS, pero de todos modos ...

RewriteRule ^invite/(.*)/$ app_name://$1 [NC,L]

Esto no coincide con la URL proporcionada. Esto coincidiría con una URL solicitada del formulario example.com/invite/1234/. Sin embargo, también está haciendo coincidir cualquier cosa : su URL de ejemplo solo contiene dígitos.

El RewriteRule patrón coincide solo con la ruta de la URL, debe usar una RewriteConddirectiva para hacer coincidir la cadena de consulta. Entonces, para hacer coincidir example.com/?invite=1234(que tiene una ruta URL vacía), necesitaría hacer algo como lo siguiente en su lugar:

RewriteCond %{QUERY_STRING} ^invite=([^&]+)
RewriteRule ^$ app_name://%1 [R,L]

La %1referencia inversa hace referencia al último CondPattern coincidente .

También he restringido el invitevalor del parámetro a al menos 1 carácter, ¿o realmente desea permitir el paso de valores de parámetro vacíos? Si el valor puede ser solo dígitos, debe limitar el patrón a solo dígitos. p.ej. ^invite=(\d+).

He incluido la Rbandera, ya que debería ser una redirección externa, si es que va a funcionar.

Sin embargo, es posible que esto no funcione en absoluto a menos que Apache conozca el app_nameprotocolo. Si no es así, simplemente se verá como una URL relativa y resultará en una redirección mal formada.