初学nginx有个路由配置问题,想请教下

现在有这个几个路由
/a/a-1
/a/a-2
/a/a-3

在nginx服务器上有这样一个目录/www/web,目录下有
a-1.html
a-2.html
a-3.html
3个html文件

希望访问这几个路由的时候,返回对应的html文件,想知道应该怎么配置。
目前我可以通过配置多条路由来实现,不知道有没有简单的方法。

目前的方法:
server {
listen 9001;
server_name localhost;
root /www/web;
location /a/a-1 {

index a-1.html;

}
location /a/a-2 {

index a-2.html;

}
}

阅读 2k
2 个回答

试试

server {
    listen 9001;
    server_name localhost;
    root /www/web;
    location ^~ /a {
        rewrite ^/a/([\w\-]+) /$1.html;
    }
}

@唯一丶
我完整想做的事情是这样的,在目录/www/web下是这样的结构
图片描述

在index.html里面会有些链接

<img src="images/1.png">
<a href="/a/a-1">a-1</a>
<a href="/a/a-2">a-2</a>

希望访问/a/a-1的时候返回a-1.html,这是我最开始问的问题,现在没有问题了。

新的问题是在a-1.html和a-2.html文件里,有些代码是这样的:

<img src="images/1.png">
<link href="styles/1.css">
<script src="scripts/1.js">

因为路由规则加了/a/前缀,访问这些静态资源的时候实际访问的是/a/images/1.png 所以会404,想请问下除了修改html代码外,能否通过nginx配置来实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题