我是一名软件开发人员,正在编写单页 JS 应用程序。我绝不是系统管理员,所以请耐心听我说完。
我想要实现的是,每当用户使用两种可能常见/不需要的 URL 模式之一访问我的网站时,都会发生重定向。
- mysite.com/index.html -> 重定向到 mysite.com
- mysite.com/path/they/remember -> 重定向到散列版本:mysite.com/#/path/they/remember
我尝试了各种方法,但总是遇到重定向循环。这是我目前的配置:
注意:您会注意到 /api 还需要所有请求通过轻量级 oauth 代理进行内部重定向,因此无论我使用什么解决方案都无法中断此重定向。
server {
# Redirect all requests through /api/ to apiproxy.php
location /api {
rewrite ^/api/?(.*)$ /apiproxy.php/$1 last;
}
location / {
index index.html
}
# use case #1 (combined with use case #2 optionally, a url such as mysite.com/index.html/path/they/remember)
location ~ /index.html/?(.*) {
return 301 http://mysite.com\#/$1;
}
location ~ /(.*) {
return 301 http://mysite.com\#/$1;
}
这种设置让我到处都有重定向循环。有谁有什么建议或知道如何以 nginx 方式完成我尝试做的事情吗?
答案1
首先,增加日志级别并检查您的日志。
您最后的位置阻止似乎是假的。
而且,return 301 http://mysite.com\#/$1;
似乎不合法;你想做什么
return 301 http://mysite.com/\#/$1/;
?
你需要逃跑吗#
?