如何在Elastic Beanstalk Windows实例中将根域名重定向至子目录
实现Elastic Beanstalk Windows环境根域名重定向到子目录的方法
AWS Elastic Beanstalk的Windows .NET环境默认已预装IIS URL Rewrite模块,无需额外安装依赖,可通过以下两种方案实现需求:
方案1:通过ebextensions配置全局IIS重定向规则(适配多应用托管场景)
该方案直接修改IIS根站点配置,不会影响两个.NET应用的原有运行逻辑:
- 第一步:在项目根目录创建
.ebextensions文件夹(注意名称开头的英文点),在文件夹内新建名为redirect_root.config的配置文件 - 第二步:将以下配置写入上述文件,部署时会自动生效:
files: "C:\\inetpub\\wwwroot\\web.config": content: | <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="RootRedirectToStart" stopProcessing="true"> <match url="^$" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(www\.)?example\.com$" /> </conditions> <action type="Redirect" url="/start/" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
配置修改提示:将
example.com替换为你的实际域名,/start/替换为目标子目录路径;redirectType值为Permanent对应301永久重定向,如需临时重定向可改为Temporary对应302状态码。
部署注意:.ebextensions下的配置文件需保存为UTF-8无BOM格式,否则会导致Elastic Beanstalk部署失败。
- 第三步:将
.ebextensions文件夹和你的JSON部署清单一起打包,正常部署到Elastic Beanstalk即可生效。
方案2:修改单应用web.config(仅需规则作用于单个应用时使用)
如果重定向规则仅需要作用于其中一个.NET应用,可直接在该应用的web.config文件的system.webServer节点下添加方案1中的重定向规则,和应用代码一起部署即可。
规则验证方法
部署完成后清理浏览器缓存,访问根域名确认会自动跳转至目标子目录;也可以执行命令curl -I www.example.com检查响应头,正常会返回Location: /start和对应的301/302状态码。
内容的提问来源于stack exchange,提问作者LJJJJjj
相关产品推荐
相关产品推荐

