Nginx重写URL不显示文件路径

时间:2018-11-07 15:43:27

标签: nginx url-rewriting

提前道歉。我是Nginx的初学者,并且在服务器管理方面有很多知识要学习。经过一番搜索和阅读之后,我真的不了解如何直接解决我的问题。

使用Nginx时,我有以下URL,这些URL笨拙地显示了服务器上的文件路径和.html扩展名:

bwillis.info/artifact/faeriefm/faerieFM.html

我只想通过以下方式访问该页面:

bwillis.info/faeriefm

我该如何完成?据我了解,我将使用“重写”功能。但是我在分解和理解此处示例的语法时遇到了麻烦:

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

文件夹结构:

index.html位于根目录

四个页面位于名为“ artifact”的文件夹中的一个文件夹中,因此:bwillis.info/artifact/samplepage.html

在示例中我使用了另一页,在“ faeriefm”文件夹的深处还有一个文件夹。所以:bwillis.info/artifact/faeriefm/faerieFM.html

服务器配置文件:

server {
    listen 80;
    listen [::]:80;

    root /var/www/bwillis.info/html;
    index index.html index.htm index.nginx-debian.html;

    server_name bwillis.info www.bwillis.info;

    location / {
            try_files $uri $uri/ =404;
    }
}

1 个答案:

答案 0 :(得分:1)

您在文件夹/var/www/bwillis.info/html/artifact/faeriefm/中有许多文件。一个名为faerieFM.html的HTML文件和一些资源文件,这些文件似乎是使用相对路径的URL加载的。

为了使相对路径的URL正常工作,您需要在原始HTML文件的URI中使用结尾的/

例如:

location /faeriefm {
    root /var/www/bwillis.info/html/artifact;
    index faerieFM.html;
}

上面的示例使用前缀位置,因为存在许多以/faeriefm开头的URI,包括:/faeriefm//faeriefm/javascript.jsroot指令可确保他们找到文件的正确文件夹。