Правила перенаправления со специальными символами - PullRequest
2 голосов
/ 25 января 2012

Я хочу использовать правила перенаправления 301 (т.е. я надеюсь, что смогу избежать переписывания правил) для перенаправления URL-адресов, содержащих специальные символы (например, é, à, ...), например,

redirect 301/ éxàmple http://mydomain.com/example

Однако простое добавление этого не сработает.Какие-либо предложения?

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Как устранить неполадки в системе Windows

В Windows вы можете использовать Notepad ++ для правильного ввода символов Юникода.После запуска Notepad ++ выберите «Кодировка в UTF-8 без BOM» в меню «Кодировка», затем введите символы Unicode и сохраните файл.

Чтобы убедиться, что символы были сохранены правильно, загрузитеhex-редактор для Windows и убедитесь, что é сохранен как c3 89, а à сохранен как c3 a0.

Предыдущий ответ, где я предположил, что вы работаете в системе Linux

Скорее всего, символы Unicode не были правильно сохранены в файле .htaccess.

Что вы получите, когда попробуете эту команду:

grep -o .x.mple .htaccess | od -t x1 -c

Вам следуетполучите это, если ваши символы Юникода сохранены правильно.

0000000  c3  a9  78  c3  a0  6d  70  6c  65  0a  65  78  61  6d  70  6c
        303 251   x 303 240   m   p   l   e  \n   e   x   a   m   p   l
0000020  65  0a
          e  \n
0000022

Если у вас установлено xxd или hd, вы можете получить более точный вывод для устранения неполадок:

$ grep -o .x.mple .htaccess | xxd -g1
0000000: c3 a9 78 c3 a0 6d 70 6c 65 0a 65 78 61 6d 70 6c  ..x..mple.exampl
0000010: 65 0a                                            e.

На всех выходах видно, что é сохраняется в виде двоичных чисел: c3 89.Из http://www.fileformat.info/info/unicode/char/e9/index.htm видно, что é при кодировании в UTF-8 действительно имеет два байта: 0xC3 и 0xA9.

Аналогично, à в формате UTF-8 имеет значение: 0xC30xA0.См. http://www.fileformat.info/info/unicode/char/e0/index.htm. Эти коды также можно увидеть на выходе.

0 голосов
/ 25 января 2012

Это должно работать, но это зависит от некоторых вещей, которые вы должны проверить в качестве контрольной пометки:

  • У вас включен mod_alias?Если нет, вы должны запустить a2enmod mod_alias
  • У вас есть перенаправление на страницу example?(Перенаправления применяются перед псевдонимами)

Затем, вместо преобразования его в UTF-8, вы можете попытаться поместить символы в том виде, как они закодированы браузерами, например %C3%A9 для é,и т.д.

...