如何在httpd.conf中添加修复URL大小写及拼写错误的代码
解决Apache URL大小写不敏感及拼写错误自动纠正问题(XAMPP/Linux)
1. 启用mod_rewrite模块
打开/opt/lampp/etc/httpd.conf,找到以下行,去掉开头的#号以启用rewrite模块:
LoadModule rewrite_module modules/mod_rewrite.so
2. 添加全局Rewrite规则到httpd.conf
在httpd.conf文件的模块加载段之后、虚拟主机配置之前,添加以下配置:
2.1 创建URL拼写纠正映射文件
创建/opt/lampp/etc/url_corrections.txt文件,按「错误路径 正确路径」的格式添加需要纠正的规则,示例:
/tets /TEST /test /TEST /foo /FooBar /wrongdir /CorrectDir
设置文件权限确保Apache可读取:
sudo chmod 644 /opt/lampp/etc/url_corrections.txt
2.2 写入Rewrite规则
在httpd.conf中添加:
# 开启Rewrite引擎 RewriteEngine On # 定义拼写纠正映射(关联刚才创建的txt文件) RewriteMap urlfix txt:/opt/lampp/etc/url_corrections.txt # 规则1:处理自定义拼写错误,匹配到映射项则301重定向到正确路径 RewriteCond ${urlfix:%{REQUEST_URI}} !^$ RewriteRule ^(.*)$ ${urlfix:%{REQUEST_URI}} [R=301,L] # 规则2:自动处理URL大小写不敏感问题 # 将请求路径转小写后检查对应的文件/目录是否存在,存在则重定向到正确大小写的路径 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteMap lc int:tolower RewriteCond %{DOCUMENT_ROOT}/${lc:%{REQUEST_URI}} -f [OR] RewriteCond %{DOCUMENT_ROOT}/${lc:%{REQUEST_URI}} -d RewriteRule ^(.*)$ ${lc:%{REQUEST_URI}} [R=301,L]
3. 重启Apache服务
执行命令重启XAMPP的Apache进程:
sudo /opt/lampp/xampp restart apache
说明
- 规则1用于手动指定的拼写错误纠正(比如
/TETS到/TEST),可随时在url_corrections.txt中新增规则; - 规则2自动处理大小写问题,无论用户输入大写、小写或混合大小写,只要对应的文件/目录存在,就会重定向到正确的大小写路径;
- 测试阶段可将
R=301改为R=302(临时重定向),避免浏览器缓存影响调试,确认稳定后再改回301(永久重定向)。
内容的提问来源于stack exchange,提问作者Brandon Gaming NL
相关产品推荐
相关产品推荐

