我已经用以下命令激活了虚拟主机中的RewriteMap:
RewriteEngine On
RewriteMap lc int:tolower..。然后在htacess中扮演这个角色:
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule . ${lc:%{REQUEST_URI}} [R=301,L]..。但是让我多次重定向,不要每次都把我的REQUEST_URI重定向到/。
我不知道为什么没有得到它(在我以前的托管工作很好),如果有人有一个想法,可以帮助?我会很高兴的,提前谢谢你!
发布于 2021-09-16 22:25:17
规则本身实际上没有什么“错误”,但是,我怀疑您与在内部重写URL的其他指令存在冲突(这可能会在文件中稍后发生)。REQUEST_URI服务器变量在重写URL时被修改,因此在随后通过重写引擎时不一定包含最初请求的URL。
为了确保规则只在初始请求上处理,而不是重写的请求,我们可以检查REDIRECT_STATUS环境变量,该变量在初始请求时为空,并在第一次成功重写后设置为(string)200 (如200OK状态)。
例如:
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule [A-Z] ${lc:%{REQUEST_URI}} [R=301,L]对REQUEST_URI进行检查的原始条件是不必要的,因为在RewriteRule指令本身中可以更有效地执行同样的检查。
在进行任何现有重写之前,您还应该确保此规则位于.htaccess文件的顶部附近,因为我们仍然在替换字符串中使用REQUEST_URI。
在测试之前,您需要确保您的浏览器缓存已清除,并首先使用302 (临时)重定向进行测试,以避免潜在的缓存问题。
https://stackoverflow.com/questions/69203790
复制相似问题