Ubuntu下Apache2+Mono部署多站点出现404错误已解决
解决Apache2+Mono多站点404问题
针对你在VPS上添加第二个<web-application>后双站点均报404的问题,按以下步骤排查修复:
1. 检查asp.net.webapp配置格式
确保每个站点的配置节点唯一且参数匹配,示例如下:
<apps> <web-application> <name>ExampleSite1</name> <!-- 必须是全局唯一名称,不能重复 --> <vpath>/</vpath> <!-- 站点根路径,一般设为/ --> <path>/var/www/Example</path> <!-- 对应Apache的DocumentRoot路径 --> <vhost>www.example.com</vhost> <!-- 精准匹配Apache VirtualHost的ServerName --> </web-application> <web-application> <name>ExampleSite2</name> <vpath>/</vpath> <path>/var/www/Example2</path> <vhost>www.example2.com</vhost> </web-application> </apps>
<name>字段是Mono区分站点的核心标识,绝对不能重复<vhost>必须与对应Apache站点的ServerName完全一致,否则Mono无法正确路由请求
2. 禁用Apache的Mono自动应用功能
在每个VirtualHost配置块内添加MonoAutoApplication disabled,避免自动生成的应用与手动配置的web-application冲突:
<VirtualHost *:443> ServerName www.example.com ServerAlias Example.com DocumentRoot /var/www/Example MonoAutoApplication disabled <!-- 新增这一行 --> <Directory /var/www/Example/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all SetHandler mono DirectoryIndex index.aspx index.html Default.aspx </Directory> <!-- 其余SSL、日志配置保持不变 --> </VirtualHost>
3. 修复站点目录权限
VPS上Mono以www-data用户运行,需确保站点目录拥有正确的权限:
chown -R www-data:www-data /var/www/Example chown -R www-data:www-data /var/www/Example2 chmod -R 755 /var/www/Example chmod -R 755 /var/www/Example2
4. 重启Mono服务与Apache
修改asp.net.webapp后仅重启Apache无效,必须重启Mono服务加载新配置:
# 针对systemd系统 systemctl restart mono-server4 # 针对sysvinit系统 service mono-server4 restart # 最后重启Apache systemctl restart apache2
5. 查看日志定位具体错误
若以上步骤未解决问题,查看关键日志获取错误细节:
- Apache错误日志:
tail -f /var/log/apache2/error.log - Mono服务日志:
tail -f /var/log/mono/server4.log
日志会明确提示配置解析错误、路径不存在或权限不足等具体问题。
6. 验证Mono版本一致性
对比本地与VPS的Mono版本,旧版本可能存在多站点配置兼容性问题:
mono --version
若VPS版本过旧,可通过官方源升级至稳定版。
内容的提问来源于stack exchange,提问作者rchrdp
相关产品推荐
相关产品推荐

