如何配置 nginx 重写规则以剥离单页 JS 应用程序的索引页并将非散列 URL 重定向到散列 URL?

如何配置 nginx 重写规则以剥离单页 JS 应用程序的索引页并将非散列 URL 重定向到散列 URL?

我是一名软件开发人员,正在编写单页 JS 应用程序。我绝不是系统管理员,所以请耐心听我说完。

我想要实现的是,每当用户使用两种可能常见/不需要的 URL 模式之一访问我的网站时,都会发生重定向。

  1. mysite.com/index.html -> 重定向到 mysite.com
  2. 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/;

你需要逃跑吗#

相关内容