如何使用Nginx和PHP實現多域名解析及靜態和偽靜態頁面的共存?

如何使用Nginx和PHP實現多域名解析及靜態和偽靜態頁面的共存?

使用nginxphp巧妙實現多域名解析及靜態、偽靜態頁面共存

在Nginx和PHP的網站架構中,經常需要同時處理多個域名解析,并支持靜態頁面和偽靜態頁面的訪問。本文將介紹如何配置Nginx,使兩個不同域名指向同一目錄,并分別實現靜態和偽靜態訪問效果。

假設我們有兩個域名:www.example.com 和 m.example.com,它們都指向同一個目錄。需求如下:

  • 訪問www.example.com時,直接訪問靜態頁面,例如www.example.com/about.html
  • 訪問m.example.com時,實現偽靜態效果,例如m.example.com/about.html實際訪問的是m.example.com/index.php?page=about。

實現方法:

對于www.example.com,由于其訪問靜態頁面,無需特殊配置,只需確保.html文件存在于目標目錄即可。

立即學習PHP免費學習筆記(深入)”;

對于m.example.com,我們需要在Nginx中添加偽靜態規則,將.html后綴的請求重寫到對應的PHP文件。以下為Nginx配置示例:

server {     listen 80;     server_name m.example.com;     root /path/to/your/website; # 將/path/to/your/website替換為你的網站根目錄      location ~* .html$ {         rewrite ^/(.*).html$ /index.php?page=$1 last;     }      # ... other configurations ...     location ~ .php$ {         include snippets/fastcgi-php.conf;         fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 替換為你的php-fpm socket路徑     } }

這段配置中,location ~* .html$匹配所有.html結尾的請求,rewrite指令將請求重寫到index.php,并將.html之前的部分作為page參數傳遞給PHP。last標志告訴Nginx繼續處理重寫后的請求。 請確保將/path/to/your/website和unix:/run/php/php7.4-fpm.sock替換為你的實際路徑。

通過以上配置,我們成功實現了兩個域名指向同一目錄,并分別支持靜態和偽靜態頁面的訪問。 希望此方法能幫助您解決類似問題。

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享