众所周知,LAMP代表Linux下Apache、MySQL、PHP这种网站服务器架构;而LNMP指的是Linux下Nginx、MySQL、PHP这种网站服务器架构。LNMP一键安装包可以从网上下载使用。

Nginx(发音同 engine x)由 Igor Sysoev 用C语言为俄罗斯访问量第二的搜索引擎 Rambler.ru 站点开发,是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3/SMTP)代理服务器,其将源代码以类BSD许可证的形式发布,并在一个BSD-like 协议下发行。其特点是小巧高效,占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好。中国大陆使用Nginx网站用户有:新浪、网易、淘宝、腾讯等。Nginx第一个公开版本0.1.0发布于2004年10月4日。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,Nginx 1.0.4发布。由此可以看出使用LNMP架构的好处。

关于伪静态技术,最初是动态语言出现后为了解决用户访问的便利性和搜索蜘蛛的友好性。关于伪静态的组件有ISAPI_Rewrite、开源的IIRF等。但ISAPI_Rewrite Lite版只支持全局的httpd.conf的,不支持分布式的httpd.ini的,只有收费的Full版才支持分布式httpd.ini。现在我们知道,Nginx也能实现简单的伪静态。更多介绍伪静态可以参考

CI在Apache、Nginx上运行需要.htaccess配置文件,在IIS服务器上则需要web.config文件,CI的伪静态我们可以通过.htaccess里面的规则设定

RewriteEngine on  
RewriteCond $1 !^(index\\.php|system\\.php|images|skin|js|ls|swfupload|attachment|application|robots\\.txt)  
RewriteRule ^(.*)$ /fx/index.php/$1 [L]
注: RewriteRule ^(.*)$ /webdir/index.php/$1 [L]里的webdir是你的CI程序目录 

Nginx服务器伪静态设置首先需要设置nginx开启 path_info (LNMP默认已开启)
,可以参考以下来自ZK的方法:

假设我们的子目录名称为 zk
        location /zk/ {
        root   /var/www/html/;
        index index.html index.htm index.php;
        if ($request_filename !~* /giftbox/(javascript|css|images|style|upimg|artDialog|fckeditor|userfiles|crontab|robots\.txt|index\.php)) {
        rewrite ^/(.*)$ /zk/index.php?$1 last;
        }

root 的目录路径为您的根目录路径 不需要更改。

另外附上主目录伪静态规则

        #rewrite ^/$ /index.php last;
        #一下是防止某些文件夹被直接访问
        #rewrite ^/(?!index\.php|images|robots\.txt|js|css|upimg|artDialog|style)(.*)$ /index.php/$1 last;

首先需要设置nginx 开启 path_info (lnmp默认已经开启path_info)

伪静态规则:

if ($request_uri ~* ^/system)
{
 rewrite ^/(.*)$ /index.php?/$1 last;
 break;
}

if (!-e $request_filename)
{
 rewrite ^/(.*)$ /index.php?/$1 last;
 break;

}

在网上查到的资料很多人都说nginx目前不支持.htaccess文件来做伪静态,小子也觉得不应该,作为世界上轻量级最好用的WEB服务器,Nginx应该可以的,谷歌了一下,找到了nginx完全可以支持.htaccess文件的资料,其实Linux下的文件是没有扩展名区别的,而针对nginx的伪静态配置文件更是没有名称的区别,只要指定相应路径即可,具体步骤请按如下操作:

1、新建一个.htaccess文件,在里面输入规则,如:

  1. # nginx rewrite rule
  2. rewrite ^(.*?)/article/.*?-(\d+)-(\d+)\.html$ $1/show.html?id=$2&page=$3 break;
  3. rewrite ^(.*?)/category/.*?-(\d+)-(\d+)\.html$ $1/list.html?id=$2&page=$3 break;
  4. rewrite ^(.*?)/tag/([^/]+)/?$ $1/tag.html?w=$2 break; <span id="more-1758"></span>
  5. rewrite ^(.*?)/tag/([^/]+)/(\d+)$ $1/tag.html?w=$2&page=$3 break;
  6. # end nginx rewrite rule

保存文件并上传到网站的根目录。

2、修改虚拟主机配置

# ee /usr/local/etc/nginx/nginx.conf #freebsd 7.2默认nginx默认安装的配置文件
在你需要添加伪静态的虚拟机中的server块中引入.htaccess文件

include /usr/www/.htaccess #请把这个改成你.htaccess文件的位置,
保存、退出重启nginx

# /usr/local/etc/rc.d/nginx restart
刷新看看,如果能正常器从证明你的rewrite rule的语法是正确

nginx的rewrite规则您可以直接放在主机配置中也可以放在独立的文件用includeinru,存为独立的文件时,保存到一个新的文件(文件名可以任意取,不过建议还是用.ht(注意有个“点”)开头的文件名,因为这个服务器里面默认过滤了外部对.ht开头的文件访问:

location ~ /\.ht {
deny all;
}

CI的htaccess配置

最近突然想把链接中的index.PHP去掉,网上搜索了一把,发现解决方法很多,整理下。

首先是两个基本修改点:

1. 在httpd.conf中,将 所有 AllowOverride None  改为 AllowOverride All 好像共有三处吧,然后重启apache

2. 将 config.php中的  $config['index_page'] = 'index.php';  改为 $config['index_page'] = '';

然后根据具体配置:

3.1 如果站点直接位于服务器根目录下,如/www/ 那如下配置就行:

  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|robots|stafile|upload|\.txt)
  3. RewriteRule ^(.*)$ /index.php/$1 [L]

3.2 如果设置了别名,则加上 RewriteBase /别名/

3.3 如果位于根目录下的二级目录,则修改Rewrite Rule为:

  1. RewriteEngine on
  2. RewriteCond $1 !^(index\.php|robots|stafile|upload|\.txt)
  3. RewriteRule ^(.*)$ /mysite/index.php/$1 [L]

最后,有个htaccess教程,可以详细了解下各个配置。
http://www.javascriptkit.com/howto/htaccess.shtml

CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法的更多相关文章

  1. CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法2

    1.在根目录西下  新建.htaccess 文件 RewriteEngine on RewriteCond $1 !^(index\.php|images|robots\.txt) RewriteRu ...

  2. ci框架(codeigniter)Email发送邮件、收件人、附件、Email调试工具

        ci框架(codeigniter)Email发送邮件.收件人.附件.Email调试工具 Email 类         CodeIgniter 拥有强大的 Email 类来提供如下的功能: 多 ...

  3. php配置伪静态如何将.htaccess文件转换 nginx伪静态文件

    php通常设置伪静态三种情况,.htaccess文件,nginx伪静态文件,Web.Config文件得形式,如何将三种伪静态应用到项目中呢, 1,.htaccess文件 实例 <IfModule ...

  4. CI框架CodeIgniter伪静态各种服务器设置

    Apache服务器.htaccess伪静态设置 RewriteEngine on RewriteCond $1 !^(index\\.php|system\\.php|images|skin|js|l ...

  5. CI框架------codeIgniter

    之前学习了thinkphp,学完之后印象不太深刻,在网上询问了一下,他们都说多学几个框架,以后可以自己写框架. 于是自己就放下thinkphp,下定决心再学一个,于是又从网上看了几个框架,综合比较了一 ...

  6. CI框架中遇见的一些错误和解决方法 笔记

    ps:根据经验不断修改和更新,欢迎指出错误~ 1. An uncaught Exception was encountered Type: Exception Message: Session: Co ...

  7. Nginx配置CI框架问题(Linux平台下Centos系统)

    CI框架:官方文档 http://codeigniter.org.cn/user_guide/index.html CI框架的数据流程图如下: 其中:index.php作为入口文件,在安装好CI框架后 ...

  8. **【ci框架】精通CodeIgniter框架

    http://blog.csdn.net/yanhui_wei/article/details/25803945 一.大纲 1.codeigniter框架的授课内容安排 2.codeigniter框架 ...

  9. CI框架大纲总结

    一.大纲 1.codeigniter框架的授课内容安排 2.codeigniter框架的简介 |-----关于框架的概念 |-----使用CI框架的好处 |-----为什么选择CI框架 3.codei ...

随机推荐

  1. 《BI那点儿事》数据仓库建模:星型模式、雪片模式

    数据仓库建模 — 星型模式Example of Star Schema 数据仓库建模 — 雪片模式Example of Snowflake Schema 节省存储空间 一定程度上的范式 星形 vs.雪 ...

  2. CSS 超出隐藏问题

    .dropdown-navbar>li:last-child>a { border-bottom: 0 solid #DDD; border-top: 1px dotted transpa ...

  3. javascript事件之:谈谈自定义事件

    对于JavaScript自定义事件,印象最深刻的是用jQuery在做图片懒加载的时候.给需要懒加载的图片定义一个appear事件.当页面图片开始出现时候,触发这个自定义的appear事件(注意,这里只 ...

  4. Head First 设计模式 --5 单例模式

    单例模式:确保一个类只有一个实例,并提供一个全局访问点.用到的设计原则:1.封装变化2.组合优于集成3.针对接口变成而不是针对实现4.为交互对象之间的松耦合设计而努力5.类应该对扩展开放,对修改关闭6 ...

  5. python之map、filter、reduce、lambda函数 转

    python之map.filter.reduce.lambda函数  转  http://www.cnblogs.com/kaituorensheng/p/5300340.html 阅读目录 map ...

  6. 【转载】JSP常用跳转方式

    转自:http://blog.csdn.net/wanghuan203/article/details/8836326 (1)href超链接标记,属于客户端跳转 (2)使用javascript完成,属 ...

  7. guava学习--Supplier Suppliers

    转载:http://www.cnblogs.com/jun-ma/p/4850591.html Guava Suppliers的主要功能是创建包裹的单例对象,通过get方法可以获取对象的值.每次获取的 ...

  8. python 从文件导入分类

    # -*- coding:utf-8 -*- """ 从文件导入分类 根据行首制表符或空格确定层级关系(4个空格等于一个制表符 同一行制表符和空格不能混用 ) 必须是 u ...

  9. MyEclipse中Maven的配置

    之前在MyEclipse这个IDE中配置Maven,完成配置后启动Maven时出现-Dmaven.multiModuleProjectDirectory system propery is not s ...

  10. 超链接<a></a>

    1.<a href="#" target="_self原窗口-默/_blank新窗口/_top/_parent"></a> 绝对路径:f ...