您需要使用Apache 的内部tolower函数定义重写映射。这只能在 vhost 或服务器配置中完成,如果您尝试将这些指令放在 htaccess 文件中,则会导致错误:
RewriteEngine On
RewriteMap lowercase int:tolower
然后,在您的 htaccess 文件中,您可以在已有的任何重写规则之上使用类似的内容。重定向规则必须在您可能拥有的任何路由规则之前:
# check that the lower case version of the URI is different than the unchanged URI
RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteCond ${lowercase:%1}::%1 !^(.*)::\1$
RewriteRule ^/?(.+)$ http://www.website2.com/${lowercase:$1} [L,R=301]
这会将请求重定向http://www.website1.com/UsErOfMiXedCase
到http://www.website2.com/userofmixedcase
,从而将浏览器地址栏中的 URL 替换为全小写的 URL。请注意,它不会影响具有多个路径节点的 URL,例如http://www.website1.com/SoMe/PathName/UsErOfMiXedCase
. 如果您希望它影响所有请求,包括具有多个路径/子目录的请求,那么您需要更改此行:
RewriteCond %{REQUEST_URI} ^/([^/]+)$
至:
RewriteCond %{REQUEST_URI} ^/(.+)$