У меня проблема с моими URL-адресами в моем .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
EDIT: Неанглийские письма, о которых идет речь / проблема.
Любое решение?
Вы можете изменить существующее правило с помощью правила:
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 ^([AZ](?:[^\x00-\x7F]+|[AZ])?).*$ ?open=encyclopedia&letter=$1&term=$0 [B,L,QSA] RewriteRule ^([^\x00-\x7F]+).*$ ?open=encyclopedia&letter=$1&term=$0 [B,L,QSA]
Отрицательный класс символов [^\x00-\x7F]
соответствует любому символу вне диапазона ASCII.