Apache .htaccess如何隐藏目录名 将HTML下的html文件映射到根路径访问
解决方法
你之前写的规则方向完全搞反了:你要实现的是用户访问不带/HTML/前缀的路径时,后台偷偷补上前缀指向实际文件,而不是去匹配带HTML的路径。
你只需要修改现有.htaccess,找到如下规则的上方位置:
# the following is code I found on SO to strip html tags # Remove .html (or htm) from visible URL (permanent redirect)
插入以下重写规则即可:
# 短路径映射到HTML目录下的对应文件 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{DOCUMENT_ROOT}/HTML/$1.html -f RewriteRule ^(.*)$ /HTML/$1 [L]
规则逻辑说明
- 先判断用户请求的路径不是真实存在的文件或目录,不会影响根目录下的
style.css、JS/CSS/MEDIA目录下的静态资源访问 - 再校验
HTML目录下是否存在和请求路径同名的.html文件 - 满足条件的情况下,把请求路径内部重写到
/HTML/前缀的路径,后续你已经配置好的自动补.html后缀的规则会自动处理剩下的映射,最终指向实际的/HTML/xxx.html文件
测试注意事项
修改后请清空浏览器缓存,或者用浏览器无痕模式测试,避免之前的301永久重定向缓存影响验证结果。
内容的提问来源于stack exchange,提问作者Tai
相关产品推荐
相关产品推荐

