Rescrierea caracterului hash codat URL cu htaccess

Am un site web cu o singură pagină care folosește hash (#) pentru a accesa diferite pagini.
Problema este că unii vizualizatori PDF rup legăturile mele care codifică caracterul hash, înlocuind # cu % 23 , deci, de exemplu, linkul my.app.com/#product/ 22 devine my.app.com/%23product/22 ​​.
Încerc să corectez acest lucru folosind o regulă htaccess care rescrie adresa URL:

RewriteEngine On
RewriteRule ^(.*)%23(.*)$ /$1#$2 [L,R=301,NE]

dar nu pare să funcționeze, ce pot face?

1
задан 13 October 2019 в 19:36
2 ответа

RewriteRule ] шаблон совпадает с%-декодированным URL-путем. Итак, если запрошенный URL-адрес содержит % 23 (URL-адрес в кодировке # ), вам необходимо сопоставить литерал # в RewriteRule узор . В противном случае с вашим перенаправлением все в порядке.

Например:

RewriteRule ^(.*)#(.*)$ /$1#$2 [L,R=301,NE]

Здесь требуется флаг NE ( noescape ), чтобы предотвратить # ] в подстановке , являющейся URL-адресом, закодированным в ответе на перенаправление.

Очистите кеш браузера перед тестированием. И протестируйте с 302 (временными) перенаправлениями, чтобы избежать проблем с кешированием.

0
ответ дан 4 December 2019 в 02:37

Знак # и все, что следует за ним, никогда не должны отправляться вместе с запросом.

Это только для ссылки на именованные теги

0
ответ дан 4 December 2019 в 02:37

Теги

Похожие вопросы