You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在.htaccess中无法实现public_html文件夹外的重定向

解决.htaccess无法重定向到public_html外目录的问题

你遇到的核心问题是:Apache默认限制从public_html(网站根目录)访问上级目录的文件,而且RewriteRule里用../的相对路径写法完全不生效——因为RewriteRule的目标路径是相对于DocumentRoot(也就是public_html)解析的,不是相对于.htaccess所在目录的上级。

先拆解你两段代码的问题:

  • 第一段代码里的framework/public/index.php是相对于public_html的路径,如果你上级目录的framework根本不在public_html里,自然找不到文件。
  • 第二段代码里的../framework/...写法无效,Apache不会把这种相对路径解析到DocumentRoot之外。

正确的解决方法

用Apache的环境变量%{DOCUMENT_ROOT}拼接绝对文件系统路径,就能准确定位到public_html外的文件:

RewriteEngine On

# 匹配/api和/api/xxx的所有请求,重写到上级目录的framework/public/index.php
RewriteRule ^api(/.*)?$ %{DOCUMENT_ROOT}/../framework/public/index.php [L]

额外注意事项

  1. 权限检查:确保Apache的运行用户(比如www-data或apache)有读取../framework/public目录和index.php文件的权限,否则会出现403错误。
  2. 配置生效前提:如果你的Apache配置里有AllowOverride None,需要改成AllowOverride All或者至少AllowOverride FileInfo,这样.htaccess里的Rewrite规则才能生效。

内容的提问来源于stack exchange,提问作者Mostafa Azimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:07:41