.htaccess .htacces从大写重定向到小写,URL的最后一部分除外

vojdkbi0  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(182)

我需要重定向我的网站中的所有地址从大写到小写,除了网址的最后一部分。
例如,我想更改
www.domain.com/a/B/C/XpTo
结束日期
www.domain.com/a/b/c/XpTo
只有最后一部分(XpTo)保持不变。
不过,我也可以有:
www.domain.com/A/XpTo
我需要:
www.domain.com/a/XpTo
也就是说,即使是一个小路径,也只有最后一部分必须保持不变。我如何在Apache配置文件中不使用RewriteMap而使用.htaccess来实现这一点呢?
这就是我所尝试的:

RewriteEngine On

RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.*)/"
RewriteRule [A-Z] %1 [R=302,L]
u4vypkhs

u4vypkhs1#

您显示的代码会将所有REQUEST_URI转换为小写。
您可以在RewriteRule模式中使用正则表达式来匹配最后一部分组件,将其与URI的其余部分分开,并在一个组中捕获。这可以用于将原始值放回RewriteRule目标。
同样地,也将最后一部分元件留在RewriteCond中的撷取群组之外,以取得%1中撷取的最后一个元件之前的URI部分。
您可以使用此代码:

RewriteCond expr "tolower(%{REQUEST_URI}) =~ m#(.+/)[^/]+/?$#"
RewriteRule ^[^A-Z]*[A-Z].*/([^/]+/?)$ %1$1 [R=302,L,NE]

相关问题