Apache-2.2

PHP 網站在 NGINX 中沒有按預期工作,但在 Apache 中工作

  • June 21, 2021

嗨,我剛剛創建了一個連結縮短應用程序。但是,當我嘗試將縮短連結重定向到在 Facebook 上共享的完整 URL 時,它沒有按預期工作。例如:https ://bowa.me/c8443這個連結工作正常,但如果我在 Facebook 上分享連結,並且連結將是這樣的 https://bowa.me/c8443?fbclid=IwAR0Zm8bGRgrbpQTUX_aVXxTMNFq6-MlRFe0j8e_7wm4anbWmvArPlyDaAHI這個連結沒有重定向

nginx 配置

location / {
           try_files $uri $uri/ /index.html /index.php;

   }

   location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

       location ~ /\.ht {
           deny all;
     }

   if (!-e $request_filename) {
           rewrite ^/admin/(.*)?$ /admin/index.php?a=$1 break;
           rewrite ^/(.*)$ /index.php?a=$1 last;
           break;
   }

在 nginx 中,應該按照 nginx 最佳實踐來完成,而不是試圖將 Apache2 實踐轉換為 nginx。這是解決各種問題的秘訣。

您應該嘗試以下方法:

# block for processing PHP files
location ~ \.php$ {
   include snippets/fastcgi-php.conf;
   fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

location ~ /\.ht {
   deny all;
}

# Capture part after admin to variable and use in try_files
location ~ ^/admin/(.*)$ {
   try_files $uri $uri/ /admin/index.php?a=$1;
}

# Default location, capture URI part and use as argument
location ~ ^/(.*)$ {
   try_files $uri $uri/ /index.php?a=$1;
}

location順序很重要,nginx 使用它找到的塊中的第一個正則表達式匹配。

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