Apache监听多端口必须在httpd.conf中添加Listen指令(如Listen 8080),仅在httpd-vhosts.conf中配置VirtualHost无效;每个端口需对应独立VirtualHost块,ServerName须含端口;X-Frame-Options需在启用headers_module后于VirtualHost内用Header指令设置,且与403错误分治处理。

Apache监听多个端口必须改httpd.conf里的Listen指令
只在httpd-vhosts.conf里写<virtualhost></virtualhost>没用,Apache根本不会监听那个端口。必须回到C:\XAMPP\apache\conf\httpd.conf,在已有Listen 80下面追加新行:
Listen 8080Listen 8081
不能写成Listen: 8080(冒号是错的),也不能漏掉Include conf/extra/httpd-vhosts.conf这行——它被注释掉的话,所有虚拟主机配置全失效。
每个端口对应一个<virtualhost></virtualhost>块,ServerName要带端口号
比如想用http://localhost:8080访问项目A,httpd-vhosts.conf里就得这么写:
<virtualhost>
ServerName localhost:8080
DocumentRoot "C:/xampp/htdocs/project-a"
<directory>
AllowOverride All
Require all granted
</directory></virtualhost>
关键点:
-
ServerName必须和浏览器地址栏一致(含端口),否则请求会落到第一个<virtualhost></virtualhost>兜底块 -
DocumentRoot路径末尾不加斜杠,且必须是绝对路径 - 旧版
Order Deny,Allow+Allow from all在Apache 2.4+已弃用,统一用Require all granted
X-Frame-Options要在每个<virtualhost></virtualhost>里单独设置
Apache默认不发这个头,得手动加Header指令。先确认headers_module已启用(httpd.conf里LoadModule headers_module modules/mod_headers.so没被注释)。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
然后在对应<virtualhost></virtualhost>块内加:
<ifmodule headers_module>
Header always set X-Frame-Options "SAMEORIGIN"
</ifmodule>
注意:
- 如果项目确实需要被第三方iframe嵌入(比如嵌入到管理后台),别用
DENY,改用SAMEORIGIN或直接上Content-Security-Policy: frame-ancestors 'self'(ALLOW-FROM已被Chrome/Firefox废弃) -
Header指令必须放在<directory></directory>外面、里面,放错位置会导致500错误 - 改完记得用
httpd -t验证配置语法,再重启Apache
403错误和X-Frame-Options冲突常被混淆
页面打不开时,先分清是权限问题还是帧限制问题:
- 浏览器控制台看到
Refused to display 'xxx' in a frame because it set 'X-Frame-Options' to 'DENY'→ 纯属头配置问题 - 返回
403 Forbidden但地址栏正常 → 大概率是Require all granted没写对,或DocumentRoot路径权限不足(Windows下尤其注意文件夹属性里“安全”页签是否允许IIS_IUSRS或Users组读取) - 两者同时出现?先解决403,再调
X-Frame-Options——连页面都加载不出来,头也发不出去
多端口+安全头不是叠加配置,而是两套独立机制:端口决定连接能否建立,X-Frame-Options只影响页面能否被嵌入。别指望改一个地方就同时解决路由和安全问题。










