我想将“项目名称”注入到网页上的每个链接中。
例如:链接和站点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 映射到服务器上的路径的方式rewrite
。try_files
没有可靠的方法来重写发送给客户端的实际 HTML 代码中的 URL。
您应该研究其他方法,让您的应用将所需路径添加到 URL 中。大多数应用程序都有一个根 URL 设置,例如,您可以http://localhost/forum
为论坛应用设置该设置。设置后,论坛会自动将所需前缀添加到 URL 中。