原案例分析

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

PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法的更多相关文章

  1. nginx “403 Forbidden” 错误的原因及解决办法

    nginx 的 403 Forbidden errors 表示你在请求一个资源文件但是nginx不允许你查看. 403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误 ...

  2. Nginx 502 Bad Gateway 错误的原因及解决方法

    http://my.oschina.net/zhouyuan/blog/118708 刚才在调试程序的时候,居然服务器502错误,昨天晚上也发生了,好像我没有做非常规的操作. 然后网上寻找了下答案, ...

  3. win10更新后任务栏卡死 的原因和解决办法

    @ 目录 现象: 原因: 第一步:断网并关闭资讯和兴趣 第二步:卸载更新 第三步:关闭win10自动更新 第四步:永久关闭资讯和兴趣 现象: win10 更新后,开机任务栏卡死,点开始反应,设置页面无 ...

  4. U盘安装Ubuntu 12.04成功后系统无法启动的原因及解决办法

    想搭建一个Linux开发环境,选择了ubuntu12.04长期支持版,采用u盘安装(Universal-USB-Installer做的启动),发现安装完成之后,拔掉u盘无法启动,插上u盘之后,可以重启 ...

  5. thphp(tp5)项目网站从Apache换成nginx报500

    thphp(tp5)项目网站从Apache换成nginx报500 百度了一下,查看资料是Nginx配置fastcgi.conf的问题,打开文件编辑既可,如下图:

  6. 解决wordpress修改固定链接后出现404错误不能访问文章的方法

    首先,建议大家安装完wordpress网站程序之后第一时间设置一下固定链接,避免以后修改出错.在wp后台仪表盘左侧导航里找到“设置——固定链接”即可配置你的wordpress固定链接,通常我习惯使用的 ...

  7. Nginx+CI出现404错误

    最近刚学ci框架,做了个简单的项目,在本地搭服务器的环境都调通了,但是部署到远程服务器时: http://example.com/(index.php)/ 可以访问(为配置的默认controller- ...

  8. SharePoint 2013 附加内容数据库后出现404错误

    本文讲述怎样解决SharePoint 2013 加内容数据库(Content DataBase)后出现404错误. 笔者依照http://technet.microsoft.com/en-us/lib ...

  9. 关于hasNextInt判断后无限循环输出else项的解决办法

    话不多说,上来就是干! import java.util.Scanner; public class Test_hasNextInt { /** * @param args */ public sta ...

随机推荐

  1. Q:记学习枚举过程中的一个小问题

    在学习有关java枚举的时候,我们知道了所有的枚举类型均是继承自java.lang.Enum类的,且所有的枚举常量均是该枚举类型的一个对象,且对象名即为该枚举常量的名称.例子如下:源码: public ...

  2. K:常见的正则表达式

    @装载自:http://zxin.cnblogs.com/ 平时对字符串进行校验和处理的时候难免会用到正则表达式,通常采用的方式是去网上寻找相关的正则表达式,之后copy下来进行修改,以使其满足自己的 ...

  3. Mobiscroll的介绍【一款兼容PC和移动设备的滑动插件】

    Mobiscroll是一个用于触摸设备的日期和时间选择器,它的使用不会改变HTML5.PhoneGap以及混合应用的原生用户体验.作为一款jQuery滑动选择插件,用户可以自定义主题样式,为自己的移动 ...

  4. MySQL数据库学习: 01 —— 数据库的概述

    壹 概述 一 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件). 易混淆:人们常常用“数据库”这个词语来代表他们使 ...

  5. VS的使用插件

    1.  插件安装: 1)  productivity power tools:代码查看优化插件: 2)  Visaul Studio Color Theme Editor 主题修改插件: 3)  VS ...

  6. Oracle中session和processes的设置

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  7. class, classloder, dex 详解

    class与dex文件 什么是class文件 class文件是一种能够被JVM识别,加载并且执行的文件格式. class文件的作用 class文件的作用是记录一个类文件的所有信息. 例如记住了当前类的 ...

  8. 关于Oracle开启自动收集统计信息的SPA测试

    主题:关于Oracle开启自动收集统计信息的SPA测试 环境:Oracle RAC 11.2.0.4(Primary + Standby) 需求:生产Primary库由于历史原因关闭了自动统计信息的收 ...

  9. Lambda 表达式,Java中应用Lambda 表达式

    一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...

  10. PAGELATCH_x 等待--转载

    转自出处:http://www.cnblogs.com/xwdreamer/archive/2012/08/30/2663232.html 0.参考文献 Microsoft SQL Server企业级 ...