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

单域名下双项目的.htaccess路由规则配置需求

解决方案:单域名映射多目录配置

没问题,我来帮你搞定这个单域名下同时托管Angular项目和静态博客的配置需求,分两步操作就行:

1. 根目录创建新的.htaccess文件

首先在你的网站根目录(就是包含main和blog文件夹的那个目录)新建一个.htaccess文件,内容如下:

RewriteEngine On

# 优先处理/blog路径的请求,直接映射到blog目录的静态文件
RewriteRule ^blog/(.*)$ /blog/$1 [L]

# 所有非/blog开头的请求,全部转发到main目录的Angular项目
RewriteCond %{REQUEST_URI} !^/blog/
RewriteRule ^(.*)$ /main/$1 [L]

规则说明:

  • RewriteEngine On:开启URL重写功能
  • 第一条RewriteRule:匹配所有以/blog/开头的请求,直接指向blog目录下对应的文件,[L]表示这是最后一条规则,匹配到就不再往下执行
  • 第二条规则的RewriteCond:排除掉/blog开头的请求,剩下的所有请求都转发到main目录

2. 调整main目录下的Angular项目.htaccess

因为现在请求是从根目录转发过来的,需要给Angular的.htaccess加上RewriteBase,确保路由解析正确。修改后的main/.htaccess内容如下:

RewriteEngine on
RewriteBase /main/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 不对css、js和图片进行重写
RewriteCond %{REQUEST_URI} !\.(?:css|js|map|jpe?g|gif|png)$ [NC]
RewriteRule ^ index.html [L]

调整说明:

  • 添加RewriteBase /main/:告诉Apache,这个目录下的重写规则都是基于/main/路径的,确保Angular的单页路由能正确识别转发过来的请求
  • 剩下的规则保持你原来的逻辑:如果请求的不是实际存在的文件或目录,也不是静态资源(css/js/图片),就重写到index.html,让Angular处理路由

验证效果

配置完成后:

  • 用户访问yourdomain.com或者任意非/blog路径(比如yourdomain.com/about),都会自动跳转到main目录的Angular项目
  • 用户访问yourdomain.com/blog或者yourdomain.com/blog/post.html,会直接加载blog目录的静态HTML页面

记得确保你的Apache服务器已经启用了mod_rewrite模块,并且网站目录的权限允许Apache读取.htaccess文件哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:48:20