将大写字母 URL 重定向为小写字母,除了 *** - htaccess

Redirect uppercase URL's to lowercase except *** - htaccess

我正在尝试将大写字母 URL 重定向为小写字母,但有点像噩梦! (主要是我的.htaccess知识匮乏!)

目前我有:

<IfModule mod_speling.c>
CheckSpelling on
</IfModule>

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:} [R=301,L]

效果很好,但我使用的 CMS 将分页链接放在 URL 中,例如 http://website.com/blog/P8http://website.com/blog/P10,因为 URL 有一个大写的 P(这似乎是必需的)它们是 404 或 301 重定向。

是否有我可以添加的规则,使其不会在 URL 的具有 P 的段上拾取并且在它之后立即有至少一个数字字符?也许是正则表达式?

如有任何帮助,我们将不胜感激!

您可以像这样创建一个例外:

RewriteEngine On

RewriteMap lc int:tolower

RewriteCond %{REQUEST_URI} [A-Z]
RewriteCond %{REQUEST_URI} !/P\d+/?$ [NC] 
RewriteRule (.*) ${lc:} [R=301,L]

或使用负前瞻:

RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule ^(?!.*/P\d+/?$)(.*)$ ${lc:} [R=301,L]