%23
- это закодированное в URL представление #
. Я подозреваю, что ваши правила перезаписи не удовлетворят %23
. Вы должны исследовать, как строится ответ. В частности, любые функции кодирования URL.
Однако можно решить вашу проблему с помощью правила перезаписи. Поймите, что вы вернете клиенту два ответа после отправки комментария. Вот почему лучше исправить первый ответ.
# http://example.org/foo-bar/%23comment-570630 -> http://example.org/foo-bar/#comment-570630
RewriteCond %{REQUEST_URI} %23comment-\d+$
RewriteRule (.+)\/%23-comment(\d+)$ http://host/$1/#comment-$2 [R=301]
Это не проверено, но должно работать (я не уверен в том, что экранировать \%
, поскольку это имеет особое значение в mod_rewrite)