.HTACCESS Unicode Recignisition/Encoding
.HTACCESS Unicode Recignisition/Encoding
我的 .htaccess 中的 URL 速记有问题。
也就是说,这个(现在是旧的)代码一切正常...
# URL ShortCut Maker.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} .(.+)$
RewriteRule ^(.) ?open=encyclopedia&letter=&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
编辑:question/problem中的非英语字母。
有什么解决办法吗?
您可以使用以下规则更改现有规则:
RewriteEngine On
RewriteBase /
# executes repeatedly as long as there are more than 1 spaces in URI
RewriteRule "^(\S*)\s+(\S* .*)$" + [N,NE]
# executes when there is exactly 1 space in URI
RewriteRule "^(\S*)\s(\S*)$" + [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=&term=[=10=] [B,L,QSA]
RewriteRule ^([^\x00-\x7F]+).*$ ?open=encyclopedia&letter=&term=[=10=] [B,L,QSA]
否定字符 class [^\x00-\x7F]
匹配 ASCII 范围外的任何字符。
我的 .htaccess 中的 URL 速记有问题。
也就是说,这个(现在是旧的)代码一切正常...
# URL ShortCut Maker.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} .(.+)$
RewriteRule ^(.) ?open=encyclopedia&letter=&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
编辑:question/problem中的非英语字母。
有什么解决办法吗?
您可以使用以下规则更改现有规则:
RewriteEngine On
RewriteBase /
# executes repeatedly as long as there are more than 1 spaces in URI
RewriteRule "^(\S*)\s+(\S* .*)$" + [N,NE]
# executes when there is exactly 1 space in URI
RewriteRule "^(\S*)\s(\S*)$" + [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=&term=[=10=] [B,L,QSA]
RewriteRule ^([^\x00-\x7F]+).*$ ?open=encyclopedia&letter=&term=[=10=] [B,L,QSA]
否定字符 class [^\x00-\x7F]
匹配 ASCII 范围外的任何字符。