特定位置的Nginx重写规则

时间:2018-06-23 16:31:34

标签: php nginx mod-rewrite

我有nginx服务器,想重写来自index.php中的PHP脚本的URL。

我从脚本中获得了一个URL,该URL在我的服务器上实际上并不存在。

类似于以下示例: mydomain.tld / location / that / dosen / t / exist // 然后我用nginx conf文件中的重写规则重写这个URL,它不存在,如下所示:

location / {
    rewrite ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /welcome.php last;
}

然后我可以看到welcome.php文件。就像魅力一样。

但是,如果我想针对这样的特定位置进行调整:

location /anotherfolder {
    rewrite ^/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ /another.php last;
}

我总是得到404 Not found错误。

日志输出并不能真正帮助我。

  

2018/06/23 17:57:06 [错误] 29928#29928:* 1“ /var/www/html/mydomain.tld/anotherfolder/location/that/dosen/t/exist/index.php”找不到(2:没有此类文件或目录)客户端:127.0.0.1,服务器:mydomain.tld,请求:“ GET /anotherfolder/location/that/dosen/t/exist/HTTP/2.0”,主机:“ mydomain .tld”

我不明白,为什么它可以在我的根目录(/var/www/html/mydomain.tld/)中运行 但没有另一个。

请帮助我找到我的错误。

1 个答案:

答案 0 :(得分:0)

将此添加到您的nginx conf文件中的“ 位置/另一个文件夹”部分

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
}