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

如何在同一域名不同路径部署多个Angular4项目(Apache2 Linux环境)

配置Apache2实现example.com/admin指向独立Angular项目目录

没问题,我来帮你搞定这个Apache配置的事儿,毕竟Angular项目在Apache下部署确实要注意路由和路径映射的细节,步骤其实很清晰:

第一步:先处理第二个Angular项目的打包配置

因为你的第二个项目要部署在/admin子路径下,必须在打包时指定正确的base href,否则Angular的路由会出问题。在项目目录下执行:

ng build --prod --base-href /admin/

这样生成的dist2目录里的index.html会自动带上<base href="/admin/">标签,确保路由跳转正常。

第二步:修改Apache虚拟主机配置

找到你的站点配置文件,通常在/etc/apache2/sites-available/目录下,比如example.com.conf,用编辑器打开它(记得加sudo),添加Alias和对应的目录规则:

<VirtualHost *:80>
    ServerName example.com
    # 主站点根目录
    DocumentRoot /example/project_name1/dist1

    # 核心:把/admin路径映射到第二个项目的dist目录
    Alias /admin /example/project_name2/dist2

    # 主站点的目录配置,处理第一个Angular项目的路由 fallback
    <Directory /example/project_name1/dist1>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

        RewriteEngine On
        # 如果请求的文件/目录不存在,重写到主站点的index.html
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^(.*)$ /index.html [L]
    </Directory>

    # /admin路径对应的目录配置,处理第二个Angular项目的路由
    <Directory /example/project_name2/dist2>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted

        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        # 这里要重写到/admin/index.html,对应我们设置的base href
        RewriteRule ^(.*)$ /admin/index.html [L]
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>

第三步:启用必要模块并验证配置

  1. 确保Apache的rewrite模块已经启用(Angular路由必须依赖这个):
sudo a2enmod rewrite
  1. 测试配置文件是否有语法错误:
sudo apache2ctl configtest

如果输出Syntax OK,就可以重启Apache生效:

sudo systemctl restart apache2

第四步:检查目录权限

确保Apache的运行用户(一般是www-data)有读取两个dist目录的权限:

sudo chown -R www-data:www-data /example/project_name1/dist1 /example/project_name2/dist2

验证效果

现在访问example.com应该正常显示第一个Angular项目,访问example.com/admin就能看到第二个项目了,而且像example.com/admin/settings这类路由也不会出现404错误。

如果你的站点用了HTTPS,记得在*:443的虚拟主机块里做同样的配置哦!

内容的提问来源于stack exchange,提问作者Akash lal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:00:40