【发布时间】:2017-11-13 11:16:07
【问题描述】:
我的 .htaccess 中的 URL 速记存在问题。
也就是说,这个(现在是旧的)代码一切正常......
# 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
编辑:有问题/问题的非英文字母。
有什么解决办法吗?
【问题讨论】:
-
example.com/Šanti的预期重写是什么? -
你为什么不直接使用 %1 并使用 mb_substr 提取第一个字母?
-
我添加了更多关于我的问题的说明... ...我不知道如何解释。 @anubhava:
example.com/Šanti应该重定向到并打开?open=encyclopedia&letter=Š&term=Šanti。这适用于所有其他 Đ、Č、Ć、Ž 和 DŽ字母。它是双重编码和缩短的。 @Peter:你什么意思?
标签: php .htaccess url unicode shorthand