У меня проблема с 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
РЕДАКТИРОВАТЬ: Неанглийские буквы в вопросе / проблеме.
Любое решение этого?
Вы можете изменить существующее правило с помощью правила:
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.
Других решений пока нет …