Apache .htaccess正则表达式中西里尔字母大小写不敏感规则失效问题求助
Apache .htaccess正则表达式中西里尔字母大小写不敏感规则失效问题求助
各位大佬好,我最近在配置Apache的.htaccess规则时遇到了一个棘手的问题,想过来求助!
先跟大家说下我当前的配置和需求:
我写了两条Rewrite规则,代码如下:
RewriteEngine On RewriteRule ^services$ services.php RewriteRule ^новости$ news.php
这两条规则的作用是,让www.example.com/services自动加载services.php的内容,www.example.com/новости加载news.php的内容,目前这部分是正常工作的。
我的需求是让这两个URL的路径都支持大小写不敏感访问——也就是不管用户输入的是Services、SERVICES,还是西里尔字母的大小写混合形式,都能正确指向对应的PHP文件。
针对英文的services路径,我试了三种方法,都能完美实现大小写不敏感匹配:
- 方法一:使用
[NC]标记RewriteRule ^services$ services.php [NC] - 方法二:逐个字母写大小写匹配
RewriteRule ^[sS][eE][rR][vV][iI][cC][eE][sS]$ services.php - 方法三:使用
(?i)内联标记RewriteRule (?i)^services$ services.php
这三种写法都能让所有大小写组合的services路径正确指向services.php,完全没问题。
可是轮到西里尔字母的новости规则时,这三种方法居然通通失效!我试了下面这些写法,不管用户输入大小写混合的西里尔路径,都无法正确匹配到news.php:
RewriteRule ^новости$ news.php [NC] RewriteRule ^[нН][оО][вВ][оО][сС][тТ][иИ]$ news.php RewriteRule (?i)^новости$ news.php
有没有大佬知道这是怎么回事?到底该怎么配置才能让西里尔字母的路径也支持大小写不敏感的匹配呢?
备注:内容来源于stack exchange,提问作者plsssineedheeeelp
相关产品推荐
相关产品推荐

