У меня есть одностраничный веб-сайт, который использует хэш (#) для доступа к различным страницам.
Проблема в том, что некоторые программы просмотра PDF-файлов нарушают мои ссылки, кодирующие символ решетки, заменяя #
с участием %23
, так, например, ссылка my.app.com/#product/22
становится my.app.com/%23product/22
.
Я пытаюсь исправить это с помощью правила htaccess, которое перезаписывает URL-адрес:
RewriteEngine On
RewriteRule ^(.*)%23(.*)$ /$1#$2 [L,R=301,NE]
но похоже, что это не работает, что мне делать?
Знак # и все, что после него, никогда не должны отправляться с запросом.
Это просто для ссылки на именованные теги
В RewriteRule
шаблон совпадает с%-декодированным URL-путем. Итак, если запрошенный URL содержит %23
(URL в кодировке #
) то вам нужно сопоставить литерал #
в RewriteRule
шаблон. В противном случае с вашим перенаправлением все в порядке.
Например:
RewriteRule ^(.*)#(.*)$ /$1#$2 [L,R=301,NE]
В NE
(noescape
) здесь требуется флаг, чтобы предотвратить #
в замена URL-адрес закодирован в ответе на перенаправление.
Перед тестированием очистите кеш браузера. И протестируйте с 302 (временными) перенаправлениями, чтобы избежать проблем с кешированием.