重寫nginx規則

重寫nginx規則

我正在嘗試為在 nginx 上運行的網站配置重寫規則。如果有人登陸該網站,我希望他們看到 的內容,mysite.com/wordpress但 url 不應更改,它應該保留,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。

相關內容