tin*_*tin 8 .htaccess redirect
我想使用该文件将带有大写字符的 URL 重定向http://localhost/A/B
到小写版本。http://localhost/a/b
.htaccess
使用正则表达式我可以捕获 A 和 B 但是否可以将它们转换为小写?
Gri*_*zly 10
在.htaccess中
<IfModule mod_speling.c>
CheckSpelling on
</IfModule>
Run Code Online (Sandbox Code Playgroud)
已测试,有效,如果您启用了 mod_speling。
或者,在服务器范围的 httpd.conf 中:
RewriteEngine On
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
来自:http : //www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/
如果您使用的是 Apache 2.4,那么您可以在指令中.htaccess
使用 mod_rewrite 和Apache 表达式RewriteCond
来使用该tolower()
函数。(您不再需要访问服务器配置来创建重写映射。)
例如,以下内容需要位于根.htaccess
文件顶部附近:
RewriteEngine On
RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.*)/"
RewriteRule [A-Z] %1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
这会将任何包含大写字母的 URL 重定向/更正为相同的(全部小写)URL。
该RewriteRule
模式 [A-Z]
只是检查所请求的 URL 路径中至少有一个大写字母。RewriteCond
然后该指令调用tolower()
URL 路径(服务器变量)上的函数,然后使用 regex有效捕获REQUEST_URI
其结果。/(.*)/
然后,替换字符串%1
中的反向引用保存函数调用的结果(由捕获组在前面的条件中存储),即。小写的 URL 路径。值得注意的是,这包括斜杠前缀。tolower()
首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题,只有在确定其工作正常时才更改为 301(永久)。301 由浏览器持久缓存,因此可能会给测试带来问题。
归档时间: |
|
查看次数: |
35448 次 |
最近记录: |