Нечувствительность к регистру символов кириллицы в Apache .htaccess RegExApache

Ответить Пред. темаСлед. тема
Anonymous
 Нечувствительность к регистру символов кириллицы в Apache .htaccess RegEx

Сообщение Anonymous »

Рассмотрите следующие правила перезаписи:

Код: Выделить всё

RewriteEngline On

RewriteRule ^services$ services.php
RewriteRule ^новости$ news.php
Они достигают того, что www.example.com/services загружает содержимое Services.php, а www.example.com/новости загружает содержимое news.php. Я хотел бы сделать пути обоих этих URL-адресов нечувствительными к регистру. Английский можно сделать одним из трех способов:

Код: Выделить всё

RewriteRule ^services$ services.php [NC]

Код: Выделить всё

RewriteRule ^[sS][eE][rR][vV][iI][cC][eE][sS]$ services.php

Код: Выделить всё

RewriteRule (?i)^services$ services.php
Все три из вышеперечисленных работают. Они указывают все пути services на Services.php независимо от регистра.
К сожалению, ни один из этих подходов не работает для правила с кириллицей.

Код: Выделить всё

RewriteRule ^новости$ news.php [NC]

Код: Выделить всё

RewriteRule ^[нН][оО][вВ][оО][сС][тТ][иИ]$ news.php

Код: Выделить всё

RewriteRule (?i)^новости$ news.php
Первое и третье правила указывают ТОЛЬКО www.example.com/новости на news.php. Второе правило буквально ничего не делает - оно не указывает НИ ОДНОГО пути новости к news.php. Такое ощущение, что при добавлении квадратных скобок символы кириллицы внутри перестают существовать. Например, правило ниже указывает www.example.com/новостS на news.php, но НЕ указывает на него www.example.com/новости.

Код: Выделить всё

RewriteRule ^новост[иS]$ news.php
Наконец, я попробовал еще одну вещь — заменить символы кириллицы их представлениями UTF-8 — например, заменить [сС] на [\xd1\x81\xd0\xa1] . Это тоже не сработало.
Редактирование 1. Приведенное ниже правило работает так, как ожидалось: оно указывает как на www.example.com/новости, так и на www.example.com/НОВОСТИ на news.php. К сожалению, я не думаю, что это может быть мне полезно, поскольку оно дает тот же результат, что и два RewriteRules.

Код: Выделить всё

RewriteRule ^новости|НОВОСТИ$ news.php

## The above is equivalent to:
# RewriteRule ^новости$ news.php
# RewriteRule ^НОВОСТИ$ news.php
Редактирование 2: попробовал использовать (?i). Это работало для английского языка, но не для кириллицы. Включены примеры в качестве дополнительного способа выше.

Подробнее здесь: https://stackoverflow.com/questions/787 ... cess-regex
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Нечувствительность к регистру antlr игнорируется [дубликат]
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Typesense Laravel Scout: поиск — нечувствительность к регистру и обработка диакритических знаков
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Терминал Visual Studio не работает Java-ввод для кириллицы
    Anonymous » » в форуме JAVA
    0 Ответы
    97 Просмотры
    Последнее сообщение Anonymous
  • Терминал Visual Studio не работает Java-ввод для кириллицы
    Anonymous » » в форуме JAVA
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Как отображать буквы кириллицы в строке в С#? [дубликат]
    Anonymous » » в форуме C#
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Apache»