如何在Nginx上删除和重定向远离静态.html结尾?

时间:2014-04-13 09:55:04

标签: html redirect nginx varnish

目前我正在使用以下配置文件尝试将所有网址从example.com/page.html更改为example.com/page.html。由于SEO的原因,不再可以访问Page.html,它应该是一个非常简单的重定向。搜索后,我找到了以下代码:

server {

        listen  myip8:8080;
        root /mydir;
        index index.html index.htm;
        server_name example.com;

# example.com/index gets redirected to example.com/

location ~* ^(.*)/index$ {
    return 301 $scheme://$host$1/;
}

# example.com/foo/ loads example.com/foo/index.html

location ~* ^(.*)/$ {
    try_files $1/index.html @backend;
}

# example.com/a.html gets redirected to example.com/a

location ~* \.html$ {
    rewrite ^(.+)\.html$ $scheme://$host$1 permanent;
}

# anything else not processed by the above rules:
# * example.com/a will load example.com/a.html
# * or if that fails, example.com/a/index.html

location / {
    try_files $uri.html $uri/index.html @backend;
}

# default handler
# * return error or redirect to base index.html page, etc.

location @backend {
    return 404;
}

但是,我遇到了问题。找不到我的所有静态资产。 CSS,JS等只是给出了404错误。

该代码中的内容可能导致404?

此外,值得注意的是我的服务器设置。我有两个单独的VPS。清漆和Nginx。 Varnish服务器代理对Nginx的请求。我不确定这与此有什么关系。 最后,我找到代码的原始主题就是这个:redirect /foo.html to /foo but not / to /index in nginx 它似乎适用于那里的OP,但我不能让它工作。

1 个答案:

答案 0 :(得分:2)

是的,这是非常符合逻辑的,因为您永远不会尝试自己访问$uri,因此服务器会尝试example.com/images/image.png.html

由于您已经处理了上述html案例,因此您应首先添加$uri

try_files $uri $uri.html $uri/index.html @backend;