nginx 404页面处理以及pathInfo和隐藏index.php总述

今天开发公司官网: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谢谢!

时间: 2024-10-11 06:40:02

nginx 404页面处理以及pathInfo和隐藏index.php总述的相关文章

nginx支持pathinfo并且隐藏index.php

How To Set Nginx Support PATHINFO URL Model And Hide The /index.php/ 就像这样 The URL before setting like this: http://serverName/index.php?m=Home&c=Customer&a=getInformation&id=1 Now like this: http://serverName/Home/Customer/getInformation/id/1

网站设置404页面 --nginx

有的时候根据域名要先知道用的什么web 服务器 最简单的 http://tool.chinaz.com/pagestatus/  输入域名,看返回的头部信息 用的那个web浏览器 下面的方法也是根据头部信息查看 用的谷歌浏览器 ,页面中 鼠标右键--审查元素--network标签 直接查看首页文件 在响应头里就由server 判断好了 就开始nginx 404页面配置

nginx服务器绑定多个域名、支持pathinfo路由、隐藏index.php入口文件

这篇文章仅仅是操作,解释说明部分待更新. 1. 修改nginx的配置文件(我的配置文件在/etc/nginx/nginx.conf) [[email protected] ~]# find / -name nginx.conf [[email protected] ~]# vim /etc/nginx/nginx.conf nginx.conf配置文件的大致结构: ... http{ server{ ... #一个server结构可以对应一个域名 } include vhosts/*.conf

nginx如何设置自定义404页面

404错误是WWW网站访问容易出现的错误.最常见的出错提示:404 NOT FOUND.404错误页的设置对网站SEO有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛.404页面的目的应该是告诉用户:你所请求的页面是不存在的,同时引导用户浏览网站其他页面而不是关掉窗口离去.搜索引擎通过HTTP状态码来识别网页的状态.当搜索引擎获得了一个错误链接时,网站应该返回404状态码,告诉搜索引擎放弃对该链接的索引.而如果返回200或302状态码,搜索引擎就会为该链接建立索引,这导致大量不

NGINX下如何自定义404页面

什么是404页面 如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面.404页面的默认内容和具体的服务器有关.如果后台用的是NGINX服务器,那么404页面的内容则为:404 Not Found 为什么要自定义404页面 在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了.如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户.因此,每一个网站都

Nginx反向代理后配置404页面

关键词:proxy_intercept_errors.fastcgi_intercept_errors   在网上搜索404配置,有很多配置文章,但都是关于fastcgi_intercept_errors的,不过对我们的项目不起作用.我们的项目使用nginx做反向代理,通过域名区分不同的网站,配置fastcgi_intercept_errors不生效,需要配置proxy_intercept_errors.以下罗列出两种配置方式,供大家参考.   1.fastcgi_intercept_error

Nginx实现404页面的几种方法

转自 Nginx实现404页面的几种方法,你知道几种 – 运维派http://www.yunweipai.com/archives/22238.html 第一种:Nginx自己的错误页面 Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢? 看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能. server { listen      80; server_name  www.test.com; root   /var/ww

nginx 添加404页面后,仍然提示file not found

新配置一个新的服务器后,访问失败,nginx 配置有404 页面,但仍然报 file not found error_page      404     http://xxx.com/404.html; 查了一下资料,需要在nginx 关于fastcgi配置一个参数: fastcgi_intercept_errors on; 关于: fastcgi_intercept_errors 语法:fastcgi_intercept_errors on|off 默认值:fastcgi_intercept_

nginx 设置错误的自定义404页面跳转到500

5年前写的站, 当时是在apache下写的error page, 换了nginx后, 404页面直接跳到了500 服务器内部错误. 只需要在配置 try_files 的时候指定一下就可以了 我的是debian, 在/etc/nginx/site-available/default 里面location / server{ </pre><pre name="code" class="plain"> location / { <span s