在Hostinger虚拟主机子域中用.htaccess指向public/index.php
修正后的.htaccess配置方案
你的现有规则存在拼写错误:第二条RewriteRule里的$l是小写字母L,应改为$1(数字1),这个变量用于引用正则捕获到的内容。修正后的完整配置如下:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^$ public/index.php [L] RewriteRule ^((?!public/).*) public/$1 [L,NC] </IfModule>
规则说明
RewriteEngine On:开启URL重写功能RewriteBase /:设置重写基准路径,因你的.htaccess位于子域根目录(public_html/absolute/),设为/即可- 第一条
RewriteRule:匹配子域根路径(如https://your-subdomain.com/),直接转发到public/index.php - 第二条
RewriteRule:匹配所有不以public/开头的请求,转发到public/目录对应路径,比如请求https://your-subdomain.com/foo会被转发到public/foo,最终由public/index.php处理
.htaccess学习资源推荐
- Apache官方mod_rewrite文档:最权威的参考资料,重点学习
RewriteRule、RewriteBase语法,以及正则表达式在重写规则中的应用 - 正则表达式基础:.htaccess重写高度依赖正则,先掌握捕获组、否定前瞻、匹配范围等核心语法,才能灵活编写规则
- 场景化教程:关注专注于Apache配置的技术内容,学习伪静态、域名跳转、权限控制等常见场景的.htaccess写法
- 本地测试环境:用XAMPP或WAMP搭建本地Apache服务器,修改.htaccess后实时测试规则效果,降低服务器试错成本
内容的提问来源于stack exchange,提问作者Nay Aung Lin
相关产品推荐
相关产品推荐

