Nginx

Nginx 將特定路徑重定向到 Wordpress 之外的子域

  • October 5, 2021

我有一個使用由Nginx提供支持的****Wordpress的主網站(使用 HTTPS ),我需要將特定路徑重定向到另一台伺服器,以響應子域(無 SSL)。https://example.com``http://files.example.com

無論我嘗試什麼,重寫或重定向 301,我都會進入 Wordpress 的 404 錯誤頁面。我想我無法在我的 Nginx 配置中離開 Wordpress 位置:

server {
   listen            443 ssl;
   listen            [::]:443;
   server_name       example.com;

   root              /var/www/wordpress;
   index             index.php index.html index.htm;

   access_log        /var/log/nginx/example.access.log;
   error_log         /var/log/nginx/example.error.log;

   location / {
       try_files $uri $uri/ /index.php?$is_args$args =404;
   }

   if (!-e $request_filename){
       rewrite ^/(.*)$ /index.php break;
   }

   location = /favicon.ico {
       log_not_found off;
       access_log    off;
   }

   location ~ \.php$ {
       include       fastcgi.conf;
       fastcgi_pass  php-wp;
   }

   location /files {
       rewrite ^/files(.*)$ http://files.example.com/files$1 redirect;
   }
}

這塊if_

if (!-e $request_filename){
   rewrite ^/(.*)$ /index.php break;
}

將對文件夾中缺少的任何文件的任何請求重寫/var/www/wordpress為 WordPress index.php。根本不需要這個if塊,刪除它。指令的最後一個參數try_files可以是新的 URI 或 HTTP 錯誤程式碼,但您正在嘗試同時使用兩者。將您的根位置塊更正為

location / {
   try_files $uri $uri/ /index.php$is_args$args;
}

對於重定向,您不需要單獨的location塊,只需使用

rewrite ^/files http://files.example.com$request_uri redirect;

對於 HTTP 302 臨時重定向或

rewrite ^/files http://files.example.com$request_uri permanent;

用於 HTTP 301 永久重定向。

引用自:https://serverfault.com/questions/1079588