使用.htaccess,是否可以将网址转换为小写,但允许大写编码?
当前档案:
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].* [OR]
RewriteCond %{QUERY_STRING} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}}?${lc:%{QUERY_STRING}} [L,NE,R=301]
RewriteRule ^client/(.*) client.php?q=type:$1 [QSA]
如果我删除[NE],则生成的网址会被双重编码:
期望的输出:
我正在使用RewriteMap强制使用小写,因为之前的网站是大小写混合的,需要管理的组合太多了。花了一整天审查线程,但似乎无法隔离问题..或者我可能正在以错误的方式看待这个问题。
谢谢。
答案 0 :(得分:0)
我找到了一个部分解决方案,这对我的目的来说已经足够了......根据regilero的评论,我决定删除{QUERY_STRING}的RewriteCond。这是新代码:
RewriteRule ^client/(.*) client.php?q=type:$1 [QSA]
RewriteCond %{REQUEST_URI} ^[^A-Z]*[A-Z].*
RewriteRule ^ ${lc:%{REQUEST_URI}} [L,R=301]
以上结果如下:
我需要全站小写的原因是由于之前的网站结构 - 上面的数组是一个从未被编入索引的功能(由于规范链接),所以我可以使用一个混合大小写的查询。
我希望这有助于其他人!