En utilisant le .htaccess suivant
RewriteEngine On RewriteRule ^([0-9]+)/([0-9]+)$ /api/web/index.html#$1/$2 [R=301,NC,L]
Lorsque l’utilisateur tape l’URL suivante sur son navigateur.
http://localhost:8080/1/2
Je m’attends à ce qu’Apache effectue une redirection interne et modifie également l’URL affichée dans le navigateur (via R = 301).
http://localhost:8080/api/web/index.html#1/2
La modification de l’URL affichée au navigateur est importante. Ceci permet de s’assurer que le JavaScript d’ index.html
peut parsingr correctement l’URL.
Cependant, ce que je reçois vraiment est
http://localhost:8082/api/web/index.html%231/2
Je vais avoir une erreur Apache.
Apache a pensé que je voudrais récupérer un fichier nommé 2
situé dans le répertoire api/web/index.html%231/
Y a-t-il quelque chose que je peux résoudre en modifiant uniquement .htaccess
?
Le #
devient encodé comme %23
. Essayez d’utiliser le drapeau NE
dans votre règle:
RewriteRule ^([0-9]+)/([0-9]+)$ /api/web/index.html#$1/$2 [R=301,NC,L,NE]
L’indicateur NE
indique à mod_rewrite de ne pas encoder l’URI.