nginx 404頁面處理以及pathInfo和隱藏index.php總述,nginxpathinfo
今天開發公司官網:http://www.zstime.com/,遇到一個問題,如何在nginx下設定pathInfo以及如何隱藏index.php
這裡分別來講解一下:
一、隱藏index.php
隱藏index.php需要修改nginx的設定檔,如果你是使用vhost的,需要修改如conf/vhost/你的檔案名稱.conf
檔案,整個檔案如下
server { listen 80; server_name www.zstime.com; index index index.html index.htm index.php; root /alidata/www/ZStimeBro/; error_page 404 /error.html; location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$1 last; } } location ~ \.php($|/) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~.*\.(js/css)?$ { expires 1h; } #α??̬???? include /alidata/server/nginx/conf/rewrite/default.conf; access_log /alidata/log/nginx/access/default.log;}
其中添加了:
location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$1 last; } }
將請求連結重新導向,加上一個index.php,從而實現了去除index.php的效果
二、添加pathInfo支援
nginx本身不支援pathInfo,所有我們需要自己解析URL,將index.php
location ~ \.php($|/) { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
注意:添加pathInfo方法不止一種,但是這種方法相對簡單。
其中
~ \.php($|/)
是匹配請求路徑中包含.php的url。
三、添加404
404頁面的添加折騰了一天,首先需要在nginx.conf中開啟
fastcgi_intercept_errors on;
切記要開啟這一項,不然不能自訂404頁面。
之後修改vhost對應的設定檔,添加:
error_page 404 /error.html;
切記不能加“=”號。
如此理論上來說是結束了,但是瀏覽器中試了一下發現還是不行,始終顯示 狀態嗎200!一天的時間就花在這裡!!最後查看了很久,才發現不是設定檔的問題了,而是自己使用的架構的問題,我使用的時broPHP,這個小架構居然沒有做頁面404處理,好吧,參考了http://www.csdn123.com/html/exception/693/693838_693845_693847.htm,搞定了!
總結:有時候,你覺得出問題的地方可能是安全的,你覺得很安全的地方往往出問題!
轉載請註明出處:郭勝龍部落格:http://blog.csdn.net/guoshenglong11/article/details/39324747 謝謝!
用php設定header返回404 但是頁面空白 是不是與phpini/nginx有關
404 not found
未找到該網頁,說明此網頁已經在伺服器被刪除或被改名。在安全助手裡添加黑名單,把這個網站的網址輸入進去。不讓他彈出。
404是對NOT FOUND這種錯誤情況的一個編碼,HTTP協議的錯誤資訊在不同軟體、不同的語言描述可能不同,但是其代碼是統一的,以便瀏覽器能夠正確識別和處理。
安裝nginx+php後,Php頁面訪問時提示404,但頁面是存在的
/usr/local/nginx/html/scripts ?
改成?
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;