将非 www/ssl/尾部斜杠的重写与 .htaccess 中的大写->小写结合起来

2023-12-19

因此,我有一个简单的重写来捕获非 www URL、非 SSL url 和缺少尾部斜杠的 url,以重定向到 SSL、www 和尾部斜杠,使用:

<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)$  [NC]
RewriteCond %{HTTP_HOST} ^(.*[^/])$ [NC]
RewriteRule (.*\/)$ https://www.tierpoint/$1 [R=301,L] 
RewriteRule (.*[^/])$ https://www.tierpoint/$1/ [R=301,L]
</IfModule>

我想添加重写以将大写请求驱动为小写(保留查询字符串中的任何内容)

我知道我可以循环通过RewriteRule [A-Z] - [E=HASCAPS:TRUE,S=1]

RewriteRule ![A-Z] - [S=28]
RewriteRule ^([^A]*)A(.*)$ $1a$2
...RewriteRule ^([^Z]*)Z(.*)$ $1z$2
RewriteRule [A-Z] - [N]
RewriteCond %{ENV:HASCAPS} TRUE
RewriteRule ^/?(.*) /$1 [R=301,L]

但我怎样才能将这些结合起来呢?


在您的站点根目录 .htaccess 中包含这样的内容:

RewriteEngine On

# add www, https
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI}  [R=301,L,NE]

# add a trailing slash is query string is not present
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^.]+?[^/]$ %{REQUEST_URI}/ [L,R=301,NE]

# convert URI to lowercase
# This requires Apache 2.4
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond expr "tolower(%{REQUEST_URI}) =~ m#(.+)#"
RewriteRule [A-Z] %1 [L,NE,R=301]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将非 www/ssl/尾部斜杠的重写与 .htaccess 中的大写->小写结合起来 的相关文章

随机推荐