.HTACCESS Unicode Recignisition / Encoding

У меня проблема с URL Shorthands в моем .htaccess.

А именно, все отлично работает с этим (теперь старым) кодом …

# URL ShortCut Maker.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} .(.+)$
RewriteRule ^(.) ?open=encyclopedia&letter=$1&term=%1 [B,L,NC]

Он показывает URL правильно, как example.com/Modesty (показывает страницу, как будто URL будет /?open=encyclopedia&letter=m&term=modesty), но проблема возникает, когда я вхожу:
example.com/Šanti, или же

example.com/Đin, или же

example.com/Žal,

example.com/Čakra, или же

example.com/Ćof

…если я ввожу любой из этих URL-адресов — он показывает страницу, как если бы я ввел:

?open=encyclopedia а не как

?open=encyclopedia&letter=Š&term=Šanti

РЕДАКТИРОВАТЬ: Неанглийские буквы в вопросе / проблеме.

Любое решение этого?

3

Решение

Вы можете изменить существующее правило с помощью правила:

RewriteEngine On

RewriteBase /

# executes repeatedly as long as there are more than 1 spaces in URI
RewriteRule "^(\S*)\s+(\S* .*)$" $1+$2 [N,NE]

# executes when there is exactly 1 space in URI
RewriteRule "^(\S*)\s(\S*)$" $1+$2 [L,R=302,NE]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([A-Z](?:[^\x00-\x7F]+|[A-Z])?).*$ ?open=encyclopedia&letter=$1&term=$0 [B,L,QSA]

RewriteRule ^([^\x00-\x7F]+).*$ ?open=encyclopedia&letter=$1&term=$0 [B,L,QSA]

Класс отрицательных персонажей [^\x00-\x7F] соответствует любому символу вне диапазона ASCII.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]