Как мне перенаправить все мои hrefs
в моем ответе, чтобы попасть на мой новый путь.Например, мой входной файл имеет вид
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-odin
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /odin/?(.*)
backend:
serviceName: flask-app-tutorial
servicePort: 8080
Когда я захожу на страницу по адресу https://mysite/odin., он работает и возвращает ответ:
Ответ HTML:
<html>
..
<body>
<div>
<a href="/v0/index">Home</a>
<a href="/v0/login">Login</a>
</div>
</body>
</html>
Однако, как видите, относительные ссылки похожи на <a href="/v0/index">Home</a>
.Если я нажму на это, он не будет работать, так как нет такой ссылки, как http://mysite/v0/index
.Если я нажму на ссылку, я хочу, чтобы она перешла на http://mysite/odin/v0/index
.Возможно ли либо путем изменения ссылок в ответе иметь odin
, либо, если я нажму на него, он будет смотреть на исходный URL, т.е. http://mysite/odin
и направлять его относительно этого?
Nginx Version: 1.15.10
ingress-nginx: 0.24.0
До сих пор я пробовал следующее.
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Accept-Encoding ""; #disable compression
sub_filter '<head>' '<head> <base href="/odin/">';
nginx.ingress.kubernetes.io/add-base-url: ":true"
nginx.ingress.kubernetes.io/app-root: /odin
nginx.ingress.kubernetes.io/use-regex: "true"
Я также пробовал this т.е.
change the spec.rules.host.paths.path from /odin/?(.*) to/(odin/.*)
В приведенном выше совете может быть опечатка.Я думаю, что это должно http
вместо host
.