如何实现整站域名重定向至子文件夹,仅排除/与/index.html?
解决方案
调整mod_rewrite规则,先强制HTTPS跳转,再排除需要保留的根路径和index.html,将其余请求重定向到目标文件夹:
<IfModule mod_rewrite.c> RewriteEngine On # 将所有HTTP请求强制跳转到HTTPS RewriteCond %{HTTPS} !=on [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # 排除根路径(/)和index.html,其余请求重定向到/folder/ RewriteCond %{REQUEST_URI} !^/$ RewriteCond %{REQUEST_URI} !^/index\.html$ RewriteRule ^(.*)$ /folder/$1 [R=301,L] </IfModule>
规则说明
- HTTPS跳转:优先处理HTTP转HTTPS,
R=301是永久重定向标记,L表示执行完这条规则后终止后续规则,避免冲突。 - 排除逻辑:通过
RewriteCond的!符号,指定不处理根路径和index.html请求,确保这两个路径保持原样。 - 重定向规则:把除上述例外之外的所有请求,重定向到
/folder/目录下,$1会保留原请求的路径部分,保证子页面也能正确跳转。
如果不需要地址栏显示/folder路径(内部重写而非外部跳转),可以去掉R=301,仅保留L标记。
内容的提问来源于stack exchange,提问作者k-Dushi
相关产品推荐
相关产品推荐

