在 Nginx 上優化 PHP 與乾淨 URL:開源 CMS 指南

學習如何為基於 PHP 的 CMS(如 Drupal、WordPress 和 Joomla)配置 Nginx,以實現乾淨、對 SEO 友好的 URL,同時不影響性能。

作為一名開源愛好者和獨立開發者,我經常面臨著為了最佳性能和 SEO 而配置網頁伺服器的挑戰。今天,我很興奮能分享一個強大的 Nginx 配置,它優雅地解決了基於 PHP 的內容管理系統(CMS)如 Drupal、WordPress 和 Joomla 的乾淨 URL 難題。

為什麼乾淨 URL 很重要

在深入配置之前,讓我們簡單討論一下為什麼乾淨 URL 至關重要:

  1. 改善 SEO:搜尋引擎偏好人類可讀的 URL。
  2. 提升用戶體驗:乾淨 URL 更容易記憶和分享。
  3. 專業性:它們讓你的網站看起來更加精緻專業。

Nginx 配置解決方案

以下是實現我們目標的 Nginx 伺服器區塊:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
server {
    listen 80;
    server_name www.domain.com;
    index index.html index.htm index.php;
    root /path/to/domain/files;

    location / {
        error_page 404 = //e/index.php?q=$uri;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /path/to/domain/files$fastcgi_script_name;
    }

    access_log /usr/local/nginx/logs/domain.access_log;
    error_log /usr/local/nginx/logs/domain.error_log;
}

解析配置

讓我們分析關鍵組件:

  1. 伺服器區塊:定義基本伺服器設置,包括域名和根目錄。

  2. 乾淨 URL 的位置區塊

    1
    2
    3
    
    location / {
        error_page 404 = //e/index.php?q=$uri;
    }
    

    這個巧妙的技巧將 404 錯誤重定向到你的 CMS 的 index.php,允許它處理乾淨 URL。

  3. PHP 處理

    1
    2
    3
    4
    5
    6
    
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /path/to/domain/files$fastcgi_script_name;
    }
    

    配置 FastCGI 以高效處理 PHP 文件。

  4. 日誌記錄:設置訪問和錯誤日誌以進行監控和故障排除。

實施提示

  1. www.domain.com 替換為你的實際域名。
  2. 調整 /path/to/domain/files 以匹配你的網站根目錄。
  3. 確保你的 PHP-FPM 配置為監聽 127.0.0.1:9000

結論

這個配置為在 Nginx 上實現基於 PHP 的 CMS 的乾淨 URL 提供了一種簡化的方法。它展示了開源解決方案的強大和靈活性,允許開發者創建強大、對 SEO 友好的網站,而無需複雜的設置。

在實施這個解決方案時,請記住網頁開發的世界在不斷發展。保持好奇心,繼續實驗,並不要猶豫與社區分享你自己的創新。祝編碼愉快!

Writing about the internet