使用nginx和php巧妙實現多域名解析及靜態、偽靜態頁面共存
在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