В настоящее время я применяю множество переадресации 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
, этот символ товарного знака интерпретируется как два символа, поэтому ..
работает для него как регулярное выражение, а .
не.