重写规则 nginx

重写规则 nginx

我正在尝试为在 nginx 上运行的网站配置重写规则。如果有人访问该网站,我希望他们看到的内容,mysite.com/wordpress但网址不应改变,它应该保持不变。mysite.com但如果有人访问,mysite.com/some_file.php他们应该能够看到该文件。在我的位置块中,当我添加 301 重定向时,它可以工作,但当我添加一些重写规则时,它们不起作用,我看到 example.com 上的 root 的内容。请建议如何使重写规则起作用。

这有效,但 URL 发生了变化example.com/wordpress(这不是所需的结果)

location = / {
    return 301 http://example.com/wordpress;
}

这不行

PHP NGINX 配置:

location = / {

    #   return 301 http://example.com/wordpress;
    # nginx configuration

    if ($http_host ~ "^(www.)example.com$"){
        rewrite ^(.*)$ /wordpress/ break;
    }
    if ($http_host ~ "^(.*).example.com"){
        rewrite ^(.*)$ http://example.com/wordpress/%1/$1 redirect;
    }
    if (!-e $request_filename){
        rewrite ^(.*)$ /wordpress/$1;
    }
    rewrite ^/(.*)index\.(php)$ http://$http_host/$1 redirect;

}
location ~ \.php$ {
    try_files $uri =404;
    include fastcgi_params;
    fastcgi_pass php;
}

答案1

我通过添加解决了这个问题

try_files $uri $uri/wordpress /wordpress/index.php?$args;

到位置 / 阻止并删除所有其他重写规则。它所做的是,首先尝试请求文件,然后是 /wordpress 子文件夹,然后是子文件夹中的 index.php。

相关内容