Назад | Перейти на главную страницу

Перезапись хеш-символа в кодировке URL с помощью htaccess

У меня есть одностраничный веб-сайт, который использует хэш (#) для доступа к различным страницам.
Проблема в том, что некоторые программы просмотра 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 (временными) перенаправлениями, чтобы избежать проблем с кешированием.