Apache服务器默认的网站根目录并非一个固定值,多数Linux发行版打包安装后默认是/var/www/html,而源码编译和Windows官方包则默认在安装目录下的htdocs。 如果你刚装好Apache,想知道网站文件该放哪,先确认自己属于哪一类环境。
apache默认网站根目录在哪找到?
很多朋友第一次接触Apache,都是从云服务器开始的,买一台CentOS或Ubuntu的机器,装好服务,把网页文件往某个目录一丢,打开IP却看到的是默认欢迎页,这时候才反应过来:文件放错位置了。
不是说Apache有一个“官方默认路径”,而是不同系统的维护者,在打包时把路径改成了符合自家习惯的位置,行业共识认为,Web服务器根目录路径本身没有技术限制,完全由配置文件里的DocumentRoot指令决定,所以你在网上搜“apache默认网站根目录”,会看到好几个不同答案,这是正常的。
Ubuntu的apache默认根目录和CentOS有什么不同
Ubuntu这类Debian系发行版,用apt install apache2安装后,默认网站根目录是/var/www/html,在这个系统里,Apache的配置被拆分到多个文件,主配置是/etc/apache2/apache2.conf,虚拟主机配置放在/etc/apache2/sites-available/,默认站点会读取/var/www/html。
CentOS和RHEL系则不同,yum install httpd安装后,apache默认根目录同样是/var/www/html,但默认站点没有单独拆出来,而是直接写在主配置文件/etc/httpd/conf/httpd.conf里,所以CentOS用户修改根目录,通常打开一个文件就能搞定。
| 系统或安装方式 | 默认网站根目录 | 配置文件位置 |
|---|---|---|
| Ubuntu / Debian(apt安装) | /var/www/html |
/etc/apache2/ |
| CentOS / RHEL(yum安装) | /var/www/html |
/etc/httpd/conf/httpd.conf |
| 源码编译安装 | /usr/local/apache2/htdocs |
/usr/local/apache2/conf/httpd.conf |
| Windows官方二进制包 | 安装目录下的htdocs |
安装目录/conf/httpd.conf |
源码编译和Windows环境下的默认路径

自己下载源码编译安装Apache,默认根目录不是/var/www/html,而是编译时指定的--prefix目录下的htdocs,Apache官方文档里给出的默认配置就是/usr/local/apache2/htdocs,这类环境多见于对版本有特殊要求的用户。
Windows用户装的是Apache官方提供的httpd压缩包,解压后所有文件都在一个目录里,网站根目录默认是那个目录下的htdocs,比如C:Apache24htdocs,因为是Windows,没有Linux那种严格的目录规范,路径随安装位置走。
宝塔面板等面板环境另说
如果你用的是宝塔、WDCP这类控制面板,Apache的默认根目录就变成了面板设置的/www/wwwroot下的站点目录,面板环境里每个站点一个独立目录,由面板生成虚拟主机配置,路径不归系统默认管,严格说这不算Apache的默认值,但实际运维中,这类环境占了相当大比重。
怎么确认这台机器上Apache真正的根目录
与其背路径,不如直接查配置,装好Apache后,终端执行这条命令,先看服务器编译参数:
apachectl -V | grep HTTPD_ROOT
输出里的HTTPD_ROOT就是Apache的安装前缀,源码编译环境下,根目录通常就在这个前缀下的htdocs里,接着查DocumentRoot配置:
grep -R "DocumentRoot" /etc/apache2/ 2>/dev/null
CentOS系统改成查/etc/httpd/,这个命令会把所有配置文件里出现的DocumentRoot列出来,带行号,最后一行往往就是实际启用值。
还有一个更直接的办法,在默认站点根目录下写一个临时文件info.php是<?php phpinfo(); ?>,浏览器访问http://服务器IP/info.php,搜DOCUMENT_ROOT那一行,看到的就是当前生效的网站根目录,用完立刻删掉这个文件,别留安全隐患。
apache根目录怎么修改才不踩坑
修改根目录本身不难,真正让人头疼的是改完以后打不开,多数教程只告诉你改DocumentRoot,结果你改完发现403、404轮着来,最后才明白,DocumentRoot和<Directory>要一起改,权限也得跟上。
Ubuntu系统修改步骤
编辑默认站点配置文件:
sudo vim /etc/apache2/sites-available/000-default.conf
文件里找到DocumentRoot /var/www/html,改成你的新路径,比如/var/www/myweb,此时还有一个关键动作:同一个文件底部或者主配置里,对应新路径的<Directory>块也要改。
<Directory /var/www/myweb>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
改完用sudo apache2ctl configtest检查语法,提示Syntax OK后再重载:
sudo systemctl reload apache2
CentOS系统修改步骤
直接编辑主配置:
sudo vim /etc/httpd/conf/httpd.conf
找到DocumentRoot "/var/www/html"和紧随其后的<Directory "/var/www/html">,把两处都改成新目录,CentOS上还有一个额外坑:SELinux,如果getenforce返回Enforcing,你光改路径没有用,目录的SELinux上下文必须匹配,执行:
sudo chcon -R -t httpd_sys_content_t /var/www/myweb
或者用restorecon恢复为默认上下文,改完以后重启服务:
sudo systemctl reload httpd
权限问题
Apache进程以apache或www-data用户运行,新目录需要允许这个用户读取,最常见的问题是目录在用户主目录下,比如/home/user/site,而/home/user默认权限是700,其他用户根本进不去,于是浏览器直接给你一个403,把/home/user的权限改为711,或者干脆把网站目录放到/var/www/下,能避开这个坑。
修改apache根目录后出现403或404,多数是这三件事
改完根目录,页面报错,先别急着搜“403什么意思”,按顺序排查。
404通常指路径不存在,浏览器访问的URL对应的文件,在你指定的新目录里没有,注意DocumentRoot指向的是网站根,访问会找根目录下的index.html或index.php,如果你把文件放进了子目录,访问的时候URL里要带子目录名。
403比404更麻烦,它说明Apache能找到文件,但被挡在门外,第一个排查点是目录权限,Apache进程需要目录的读和执行权限,执行ls -ld查看目录权限,确保其他用户位有r-x,第二个排查点是SELinux,CentOS用户如果改了目录上下文,记得对照现有的

/var/www的上下文,用ls -Z查看,第三个排查点是虚拟主机配置优先级,你改的可能是httpd.conf,但真正生效的是conf.d里某个配置文件,它后面加载并把DocumentRoot覆盖了。
Apache服务器默认网站根目录的更多细节
有一点容易被忽视:默认根目录和默认页面是两个概念,打开网站默认显示什么,由DirectoryIndex指令控制,默认值是index.html,如果你只放了index.php,而系统里没启用PHP模块,Apache会把index.php当纯文本展示,或者直接列出目录结构,这种情况不算路径错误,但要明白根目录只是起点,后面的解析流程也影响用户看到的结果。
把根目录和数据目录分离也是一个实用技巧,业务代码放在/var/www/html,上传附件放在/data/uploads,再通过Alias映射到URL路径,这样即使网站根目录被误操作,核心代码和用户数据也能分隔开,恢复起来省事得多,说实话,这比纠结默认路径值多少更有意义。
Apache服务器默认网站根目录:常见问题解答
为什么我改了DocumentRoot,访问域名还是显示Apache默认欢迎页?
大概率是改错了配置文件,Debian系Apache把站点配置拆在sites-available目录里,真正生效的是sites-enabled里被启用的那个文件,例如000-default.conf,CentOS则可能是conf.d下的某个配置文件后来居上,覆盖了主配置的DocumentRoot,执行apache2ctl -S,输出里能看到当前生效的虚拟主机和它对应的DocumentRoot,对照着改就不会错。
CentOS上把apache根目录从/var/www/html改到/home/www后,站点总是403,怎么回事?
排查优先级:先看/home和/home/www的目录权限,Apache进程要能穿过所有父目录才能到达目标,/home默认权限700会直接拒绝,其次看SELinux,getenforce为Enforcing时,执行chcon -R -t httpd_sys_content_t /home/www放行,最后检查配置文件里<Directory>块是否和DocumentRoot指向一致的路径,这三处没问题,403基本消失。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/799250.html


评论列表(1条)
这篇文章写得非常好,内容丰富,观点清晰,让我受益匪浅。特别是关于执行的部分,分析得很到位,给了我很多新的启发和思考。感谢作者的精心创作和分享,期待看到更多这样高质量的内容!