來源:互聯網
上載者:User
關鍵字
wordpress
nginx
Drupal
無限重定向
伺服器配置是前端用Nginx,後端用HTTP://www.aliyun.com/zixun/aggregation/14417.html">Apache解析PHP。
從老版本的Nginx升級到新版本(>1.0)以後,發現Wordpress建立的網站都出現無限迴圈重定向問題。 Google搜索,發現很多人遇到這個問題,並不是單純Wordpress,Drupal, PHPCake等框架也都遇到同樣的問題。
wordpress的解決方案是 安裝禁止重定向的外掛程式就可以了,但是缺陷是,這樣會不利於SEO。 並且這個解決方案不是對各個框架的通用解決方案,如果不搞清楚問題的原因,其他網站遇到同樣的問題怎麼辦? 可惜經過搜索,遇到這個問題的討論都沒有揭露最終的原因。 還是決定自己跟蹤Wordpress的原始程式碼,看看問題究竟出在哪裡。 為什麼老版本的Nginx沒有問題,新版本的就出現了這個問題?
跟蹤wp-includes/canonical.php的代碼,會發現,當使用新版本Nginx的時候,訪問網站主頁HTTP://www.ithov.com/的時候,在Apache這端收到的請求是 HTTP:// www.ithov.com/index.php。 而當使用老版本Nginx的時候,Apache端收到的請求是 HTTP://www.ithov.com/。 也就是說,新版本的Nginx在收到 HTTP://www.ithov.com/請求以後,發送給後臺的Apache之前,在後面自動追加了 index.php,導致與原來的請求URL不同,所以造成很多web框架重定向。
解決方案是:
在配置Nginx伺服器的時候,注意單獨配置location = / 這一項。
server {
listen 80;
server_name ithov.com, www.ithov.com;
//!!! 注意這裡,重點配置這裡的代理規則
location = / {
proxy_pass HTTP://127.0.0.1:81/; // !!! 這一這裡,最後面有個/不能省略
include /etc/nginx/proxy.conf;
}
location ~ \.php$ {
proxy_pass HTTP://127.0.0.1:81; //!!! 這裡,最後面沒有/
include /etc/nginx/proxy.conf;
}
.....
}