.htaccess配置求助:实现域名访问隐藏目录并强制HTTPS跳转
解决.htaccess多场景重定向问题
我来帮你搞定这个配置,你需要把协议跳转(HTTP→HTTPS)、域名统一(www→非www)和内部目录重定向这三个需求组合起来,按顺序配置才能生效。之前的规则只处理了内部重定向,缺少了前面的域名和协议统一步骤。
以下是完整的.htaccess配置(放在public_html目录下):
# 开启URL重写引擎 RewriteEngine On # 规则1:处理HTTP或www开头的请求,外部跳转到https://rhf.in(地址栏会更新) RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.rhf\.in$ [NC] RewriteRule ^(.*)$ https://rhf.in/$1 [R=301,L] # 规则2:内部重定向到/rhf目录,地址栏保持不变 RewriteRule !^rhf/ /rhf%{REQUEST_URI} [L]
各规则解释:
- RewriteEngine On:必须开启,否则所有重写规则都不生效。
- 规则1:
- 第一个
RewriteCond判断当前请求是否是HTTP(非HTTPS); - 第二个
RewriteCond用OR连接,判断域名是否是www.rhf.in([NC]表示忽略大小写); - 只要满足其中一个条件,就会把请求外部重定向到
https://rhf.in/$1($1保留原请求的路径部分),[R=301]是永久重定向(利于SEO),[L]表示执行完这条规则就停止后续规则。
- 第一个
- 规则2:就是你之前的规则,当请求路径不是以
rhf/开头时,内部重写到/rhf%{REQUEST_URI},[L]停止后续规则,这一步是后台跳转,地址栏不会显示/rhf。
验证场景:
- 访问
http://rhf.in或http://www.rhf.in:地址栏会先变成https://rhf.in,后台实际加载/rhf目录的内容; - 访问
https://rhf.in:后台直接加载/rhf目录内容,地址栏保持https://rhf.in; - 访问
https://rhf.in/about:后台加载/rhf/about,地址栏还是https://rhf.in/about。
注意:如果你的服务器是Nginx,配置逻辑类似但语法不同,不过从你提到.htaccess来看应该是Apache环境,这个配置完全适用。
内容的提问来源于stack exchange,提问作者CARE HF
相关产品推荐
相关产品推荐

