nginx 配置 - 替换/重写页面上的所有无效链接。向 uri 添加前缀

nginx 配置 - 替换/重写页面上的所有无效链接。向 uri 添加前缀

我想将“项目名称”注入到网页上的每个链接中。

例如:链接和站点http://localhost/osqa/可以正常工作,但是当我在 osqa 页面上时,所有链接都直接指向 localhosthttp://localhost/account/signin/- 破损了......

所以我想重写/重定向所有链接以指向项目名称位置,例如 http://localhost/osqa/account/signin/

可能吗?如果可以,那么该怎么做?现在我正在学习rewrite和try_files。

这是我的项目树结构,项目名称是(osqa,forum,other_project,another_project):

/home/user/webapps/
├── osqa
│   ├── osqa
│   ├── media
│   └── static
├── forum
│   ├── forum
│   ├── media
│   └── static
├── other_project
│   ├── other_project
│   ├── media
│   └── static
└── another_project
    ├── another_project
    ├── media
    └── static

这是我的 nginx 配置:

server {
    listen 8080;
    server_name localhost;
    root /home/user/webapps/;

location ~ ^\/(?P<app>[\w-_]+)(/.*)?$ {
    alias /home/user/webapps/$app/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://unix:/home/user/webapps/$app/run/gunicorn.sock:/;
    }
}

我正在更改根路径并重写 uri,但尚未成功。

答案1

和仅适用于传入请求以及传入 URL 映射到服务器上的路径的方式rewritetry_files

没有可靠的方法来重写发送给客户端的实际 HTML 代码中的 URL。

您应该研究其他方法,让您的应用将所需路径添加到 URL 中。大多数应用程序都有一个根 URL 设置,例如,您可以http://localhost/forum为论坛应用设置该设置。设置后,论坛会自动将所需前缀添加到 URL 中。

相关内容