я начал видеть ошибки 404 в моих журналах для URL-адресов, как:Проблемы с простым HTAccess RewriteRule удалить% 23 от конца URL
http://site.example.com/foo/bar.html%23anchor
Очевидно, что #anchor был кодируется (вероятно, в чужой адрес электронной почты, что я не может контролировать), что приводит к сломанным ссылкам. Якорные ссылки не так важны, но я не хочу, чтобы мои пользователи видели 404 страницы. Я думал, что смогу исправить это с помощью простой перезаписи, но ничего, что я пробовал, не работал, и ни один из ответов SO, на которые я смотрел, не работал.
Коды перезаписи, которые я пробовал, отлично работали в RegExr и regex101, но когда я пытаюсь использовать его в моем .htaccess, плохая ссылка по-прежнему приводит к ошибке 404. У меня есть другие RewriteRules, но я не могу удалить нежелательный% 23anchor с конца запроса.
RewriteEngine on
RewriteBase /site
## Externally redirect non-canonical domain requests to canonical domain. ###
## This rule works ###
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://site.example.com/$1 [R=301,NC,L]
## This rule doesn't work ###
RewriteRule ^(\.html)(%23)(.*)$ $1 [R=302,NE,L]
Мне нужно изменить: http://site.example.com/foo/bar.html%23anchor
в этом: http://site.example.com/foo/bar.html
Что мне не хватает?
«RewriteRule»^(. +? \. Html) \ # "$ 1 [R = 302, L]' NE означает отсутствие экранированного результата url-string – Deadooshka
Это правило привело к 'http: //site.example. ком/сайт/Foo/bar.html'. Он удалил неправильный якорь с конца, но все же привел к 404. Обратите внимание на дополнительный «сайт», вызванный правилом RewriteBase. – rmunde