Utilizza htaccess per reindirizzare l'URL al link diretto specifico dell'app

Jul 27 2020

Sto cercando di fare quanto segue:

L'utente visita l'URL con il parametro di ricerca: http://www.example.com/?invite=1234

Voglio quindi che siano collegati in profondità all'app sul loro dispositivo iOS, quindi vadano a: app_name://1234

Qualche suggerimento su come eseguire questa operazione nel mio .htaccessfile?

Ho provato questo ma non funziona:

RewriteEngine On # Turn on the rewriting engine

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

Se RewriteRulenon funziona, qualcuno può inviarmi un codice di esempio RewriteCondo JavaScript per ottenere ciò di cui ho bisogno?

Risposte

MrWhite Jul 28 2020 at 00:18

Non sono sicuro di come funzionerà con il dispositivo iOS, ma comunque ...

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

Questo non corrisponde all'URL fornito. Ciò corrisponderebbe a un URL richiesto del modulo example.com/invite/1234/. Tuttavia, stai anche facendo corrispondere qualsiasi cosa : il tuo URL di esempio contiene solo cifre.

Il RewriteRule modello corrisponde solo al percorso dell'URL, è necessario utilizzare una RewriteConddirettiva per far corrispondere la stringa della query. Quindi, per trovare una corrispondenza example.com/?invite=1234(che ha un percorso URL vuoto), dovresti invece fare qualcosa di simile:

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

Il %1backreference fa riferimento all'ultimo CondPattern abbinato .

Ho anche limitato il invitevalore del parametro ad almeno 1 carattere o vuoi davvero consentire i valori dei parametri vuoti? Se il valore può essere composto solo da cifre, è necessario limitare il modello a sole cifre. per esempio. ^invite=(\d+).

Ho incluso il Rflag, dal momento che dovrebbe essere un reindirizzamento esterno, se funzionerà.

Tuttavia, questo potrebbe non funzionare affatto a meno che Apache non sia a conoscenza del app_nameprotocollo. In caso contrario, verrà semplicemente visto come un URL relativo e risulterà in un reindirizzamento non corretto.