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

htaccess Redirect / RedirectMatch с URL-адресами, содержащими специальные / закодированные символы

В настоящее время я применяю множество переадресации 301 в .htaccess файл для веб-сайта, который недавно изменил свою структуру. Все работает, как ожидалось, за исключением URL-адресов, содержащих специальные символы, для которых я получаю ошибку 404.

Например, следующие директивы, имеющие символ зарегистрированного товарного знака (®), открывают 404 страницы:

RedirectMatch 301 ^/directory/link-with®-special-character(/)?$ somelink.com
RedirectMatch 301 ^/directory/link-with%c2%ae-special-character(/)?$ somelink.com

Я также пробовал использовать Redirect, RewriteRule и окружающие URL-адреса двойными кавычками, и ничего не работает.

Кто-нибудь знает, что может происходить, или как правильно обрабатывать эти типы директив?

Любая помощь приветствуется.

Я могу подтвердить, что эти две попытки RedirectMatch также терпят неудачу при моей установке apache, даже с учетом использования заглавных букв (в моих журналах запросы отображаются как link-with%C2%AE-special-character).

Вы можете рассмотреть возможность использования регулярных выражений RedirectMatch, заменив размещение символа товарного знака на .* или (как кажется, работает для моей среды apache) .., например

RedirectMatch 301 ^/directory/link-with..-special-character(/)?$ http://somelink.com

На что указывает urlencoding %C2%AE, этот символ товарного знака интерпретируется как два символа, поэтому .. работает для него как регулярное выражение, а . не.