nginx 404頁面處理以及pathInfo和隱藏index.php總述,nginxpathinfo

來源:互聯網
上載者:User

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;
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.