Cpanel中通过.htaccess将主域名重定向到文件夹时index.php被下载
问题根源
访问域名时PHP文件被直接下载,本质是Apache没有将目标文件传递给PHP模块解析,直接作为静态资源返回,该问题由你当前的重定向规则逻辑漏洞导致:现有规则仅将根路径请求映射到foldername/public/index.php的物理文件路径,没有触发public目录下的解析规则,同时缺少PHP文件处理声明。
修复步骤
- 替换根目录的.htaccess规则为如下内容,统一将所有主域名请求重定向到public目录:
RewriteEngine on RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ RewriteCond %{REQUEST_URI} !^/foldername/public/ RewriteRule ^(.*)$ /foldername/public/$1 [L]
- 在
foldername/public/目录下新增.htaccess文件,添加PHP解析声明与框架默认重写规则:
<IfModule mod_rewrite.c> RewriteEngine On # 强制PHP文件交给解析器处理,避免直接下载 <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> AddType application/x-httpd-php .php .php5 # 常规入口文件重写规则(适配大部分PHP框架) RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
- 排查Apache基础配置确保规则生效:
- 执行
apache2ctl -M确认已启用rewrite_module与对应版本的php_module - 确认站点VirtualHost配置中
AllowOverride参数设置为All,否则.htaccess规则不会被加载 - 修改配置后重启Apache服务生效
内容的提问来源于stack exchange,提问作者Priya Goud
相关产品推荐
相关产品推荐

