hashtag dans apache .htaccess

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.