使用 .htaccess,是否可以将 url 转换为小写,但允许大写编码?
当前文件:
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]
- 浏览器:domain.com/client/city?mf[]=liverpool(正确)
- Googlebot:domain.com/client/city?mf%5d%5b=liverpool(301,不正确)
如果我删除 [NE],则生成的 url 是双重编码的:
- 浏览器:domain.com/client/city?mf%255b%255d=liverpool(200,但结果不正确)
- Googlebot:domain.com/client/city?mf%255b%255d=liverpool(200,但结果不正确)
期望的输出:
- 浏览器:domain.com/client/city?mf[]=liverpool(正确)
- Googlebot:domain.com/client/city?mf%5D%5B=liverpool(200,正确)
我强制使用 RewriteMap 小写,因为以前的站点是混合大小写的,需要管理的组合太多。花了一整天的时间审查线程,但似乎无法隔离问题..或者我可能以错误的方式看待这个问题。
谢谢你。