PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

原案例分析

1、原来的网站在wamp环境下搭建完成,一切正常,上传到虚拟主机环境为lnmp,结果访问时可以打开主页,然后点其他页面全部报404错误;
 
2、经分析得出原因:原网站环境为wamp使用了伪静态,伪静态规则写在网站根目录的.htaccess文件中,Apache下默认识别此文件内容,而Nginx服务器不识别.htaccess文件,导致伪静态规则无效,自然无法解析url地址,导致404错误(文件不存在)
 
3、解决办法:因为Nginx服务器不识别.htaccess文件的,所以原来写在此文件中的伪静态规则需要转移出来,转移方式有两种:

方法一、如果想保留.htaccess文件,则在linux服务器此目录  /usr/local/nginx/conf/rewrite/ 下建立一个伪静态规则配置文件名字任取,例如:/usr/local/nginx/conf/rewrite/my.conf,将原来在.htaccess文件中的rewrite规则转换成nginx下的rewrite规则,提供一个自动转换网址
 
http://www.anilcetin.com/convert-apache-htaccess-to-nginx/    实测真实有用

CentOS 6.2实战部署Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

使用Nginx搭建WEB服务器 http://www.linuxidc.com/Linux/2013-09/89768.htm

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3下Nginx性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3下配置Nginx加载ngx_pagespeed模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4安装配置Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx搭建视频点播服务器(仿真专业流媒体软件) http://www.linuxidc.com/Linux/2012-08/69151.htm
 
本案例原规则
 

 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
 
 
转换成Nginx后
 
if (!-d $request_filename){

 set $rule_0 1$rule_0;
 }
 if (!-f $request_filename){

 set $rule_0 2$rule_0;
 }
 if ($rule_0 = “21”){

 rewrite ^/(.*)$ /index.php/$1 last;
 }

然后将转换好的规则替换.htaccess文件内容,将.htaccess文件导入my.conf,my.conf内容如下:
 
location / {

         
                include  /home/wwwroot/dijin.com/web/.htaccess;
               
 }

–至此完成伪静态转移

方法二、如果不想保留.htaccess文件,则前面的步骤照常,最后一步替换的时候直接将转换好的内容放入my.conf文件中,如下:
 
location / {

         
                if (!-d $request_filename){

            set $rule_0 1$rule_0;
                }
                if (!-f $request_filename){

            set $rule_0 2$rule_0;
                }
                if ($rule_0 = “21”){

          rewrite ^/(.*)$ /index.php/$1 last;
                }
               
  }

–至此完成

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-06/103103.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113880.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UNet详解(附图文和代码实现)

    卷积神经网络被大规模的应用在分类任务中,输出的结果是整个图像的类标签。但是UNet是像素级分类,输出的则是每个像素点的类别,且不同类别的像素会显示不同颜色,UNet常常用在生物医学图像上,而该任务中图片数据往往较少。所以,Ciresan等人训练了一个卷积神经网络,用滑动窗口提供像素的周围区域(patch)作为输入来预测每个像素的类标签。这个网络有两个优点:(1)输出结果可以定位出目标类别的位置;(2)由于输入的训练数据是patches,这样就相当于进行了数据增强,从而解决了生物医学图像数量少的问题。但是,

    2022年4月4日
    225
  • MySQL索引系列:全文索引

    什么是全文索引?全文索引首先是MySQL的一种索引类型,也是搜索引擎的关键技术。试想在1M大小的文件中搜索一个词,可能需要几秒,在100M的文件中可能需要几十秒,如果在更大的文件中搜索那么就需要更大的系统开销,这样的开销是不现实的。所以在这样的矛盾下出现了全文索引技术,有时候有人叫倒排文档技术。全文索引的作用是什么?全文索引是将存储在数据库中的大段文本中的任意内容信息查找出来的技术。既然是查找包含某些内容的文本,用like+通配符或者正则表达式就可以实现模糊匹配,为什么还要全文索引?

    2022年4月9日
    52
  • pycharm安装后运行不了_pycharm暂停程序

    pycharm安装后运行不了_pycharm暂停程序原博客链接:http://blog.csdn.net/qingyuanluofeng/article/details/46501427问题:pycharm安装后不能执行python脚本。我的是执行后老是报错,但是之前在cpython中都是可以的。于是上网查询解决方法原因:pycharm没有设置解析器/解释器设置错误(我的就是因为这个之前设置错了,位置也是错的,结果导致程序不能正常运行出

    2022年8月28日
    4
  • 域名和服务器IP地址有什么关系[通俗易懂]

    域名和服务器IP地址有什么关系?很多用户也经常听说或接触域名和服务器IP地址,一般用户访问网站是通过域名或搜索进入,但大多数人不知道的是直接再浏览器里面输入IP地址也可以直接访问网站,下面我们就详细聊聊域名和服务器IP地址之间的关系。域名和服务器IP地址之间的关系?对于很多初入互联网的用户来说,刚开始对于域名和IP地址的概念不清楚,经常会将服务器IP地址当作域名,甚至误以为域名就是服务器IP地址等等很多问题,那么域名和服务器IP地址的定义是怎么样的呢?又有怎样的关联呢?域名:域名是一串用各.

    2022年4月16日
    72
  • 数据挖掘项目的生命周期是指_数据挖掘生命周期的数据准备阶段

    数据挖掘项目的生命周期是指_数据挖掘生命周期的数据准备阶段 第一步:数据收集; 第二步:数据清理和转换;          目前有很多技术能用于数据清理和转换:           1、数据类型转换;          2、连续列转换;          3、分组;          4、聚集;          5、缺失值处理;          6、删除孤立点; 第三步:模型构建 

    2025年9月14日
    6
  • Git查看、删除、重命名远程分支和tag

    Git查看、删除、重命名远程分支和tag

    2021年10月23日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号