CI在Nginx服务器上rewrite去掉index.php例子

CI框架在nginx服务器上配置rewrite去掉index.php的方法:

vim /usr/local/webserver/nginx/conf/nginx.conf
实例配置代码:

 server
  {
    listen       80;
    server_name  www.111cn.net;
    index index.html index.htm index.php;
    root  /data0/htdocs/lamp100;
 
    #nginx去掉index.php
    location / {
       rewrite ^/$ /index.php last;
 
       rewrite ^/(?!index\.php|robots\.txt|uploadedImages|resource|images|js|css|styles|static)(.*)$ /index.php/$1 last;
    }
 
    #nginx模拟pathinfo,否则CI框架的控制器无法访问
 
    location ~ ^(.+\.php)(.*)$
    {
 
      fastcgi_pass  127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_split_path_info ^(.+\.php)(.*)$;
      fastcgi_param        SCRIPT_FILENAME        $document_root$fastcgi_script_name;
      fastcgi_param        PATH_INFO                $fastcgi_path_info;
      fastcgi_param        PATH_TRANSLATED        $document_root$fastcgi_path_info;
      include        fastcgi_params;
 
    }
 
    log_format  lamp100logs  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
    access_log  /data1/logs/lamp100logs.log  lamp100logs;
 
  }
 

以上都是自己实际中在使用的。【关于$document_root可能出现file not found的话,就把那个直接换成网站的root根路径】

补充: apache配置rewrite规则,删除url中的index.php

1,在httpd.conf文件中配置如下部分

<VirtualHost *:81>
DocumentRoot D:/Source/v5
</VirtualHost>

改成

<VirtualHost *:81>
DocumentRoot D:/Source/v5
 # Turn on URL rewriting
 RewriteEngine On
 
<span style="white-space:pre"> </span>RewriteRule ^/app/(.*)$ /index.php/app/$1 [L,NC] 
<span style="white-space:pre"> </span>RewriteRule ^/api/(.*)$ /index.php/api/$1 [L,NC] 
<span style="white-space:pre"> </span>RewriteRule ^/open/(.*)$ /index.php/open/$1 [L,NC] 
<span style="white-space:pre"> </span>RewriteRule ^/admin/(.*)$ /index.php/admin/$1 [L,NC] 
</VirtualHost>

RewriteRule ^/app/(.*)$ /index.php/app/$1 [L,NC] 

意思将所有http://domain/app/controller  的url重写为 http://domain/index.php/app/controller。
L(last rule) 表明当前规则是最后一条规则,停止分析以后规则的重写。
NC(no case) 不区分大小写。
2,重写规则既可以在apache配置里写,还可以在kohana的.htaccess文件里写。
另外在项目目录下面的conf/routes.php中也可以配置url替换规则。

IIS使用ISAPI_Rewrite配置httpd.ini在URL中去掉index.php

因为国内互联网应用服务提供商提供的服务器软件很多都是IIS,此处主要对IIS下使用httpd.ini配置文件去掉index.php进行介绍,如下方法经过验证:
1、修改项目配置文件"项目路径\Conf\config.php",确保URL_MODEL设置为2。
2、配置httpd.ini,配置示例如下:
[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
#如下为关键的地方,示例中Public、Rbac/Tpl/Admin/Public 下都有一些图片、CSS文件,如果不做排除,那么网页不能正常显示。如果您希望排除更多的目录,请在如下代码中增加,增加格式为(?!目录路径)。
RewriteRule /(?!Public)(?!Rbac/Tpl/Admin/Public)(.*) /index.php/$1 [L]

时间: 2024-08-24 12:18:40

CI在Nginx服务器上rewrite去掉index.php例子的相关文章

在Nginx服务器上安装配置博客程序Typecho的教程_nginx

typecho比wordpress更轻,更专注于写的享受. 现在大多的虚拟机运行环境都是lnmp,安装教程安装typecho可能会遇到404,数据配置错误问题. 把这两天安装typecho的步骤写下来给大家参考. typecho安装方法 1.下载 #网站目录 cd /usr/local/nginx/html/ wget https://github.com/typecho/typecho/releases/download/v0.9-13.12.12-release/0.9.13.12.12.-

Nginx服务器上搭建图片缓存服务的基本配置解析_nginx

最近准备用nginx搭建了一个图片服务器,看中的就是nginx超强的静态文件处理能力. 由于图片量比较大,和web服务器(也是nginx)分开运行,虽然web服务器调用图片没用问题,但毕竟是远程调用,肯定没有本地文件系统那么快,因此仍然有优化的空间. proxy_store使用前的nginx配置 location ~* ^.+\.(js|ico|gif|jpg|jpeg|png|html|htm)$ { log_not_found off; access_log off; expires 7d;

在Nginx服务器上屏蔽IP的一些基本配置方法分享_nginx

采集和防止采集是一个经久不息的话题,一方面都想搞别人的东西,另一方面不想自己的东西被别人搞走. 本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现. 1.查找要屏蔽的ip awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n nginx.access.log 为日志文件, 会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不是蜘蛛的ip屏蔽掉,本例当中我们屏蔽掉 165

Nginx服务器上安装并配置PHPMyAdmin的教程_php技巧

一. 准备工作: 1. 如果mysql的root账号为空,需要设置root密码 CentOS下默认安装的mysql服务器,里面的root账号默认密码为空,首先为root设置一个密码 #mysqladmin -u root password yourpassword *注: 虽然通过一些特殊配置,可以使phpmyadmin允许空密码登录,但是不推荐这样做,尤其是公网的服务器. 2. 设置php.ini正确配置session.save_path 1). 首先检查php.ini配置文件 #grep s

在Nginx服务器上配置Google反向代理的基本方法_nginx

长期以来谷歌在TC一直被间歇性干扰,直至今日已经被完全屏蔽,给我们的学习和工作造成极大不便.以下为反代谷歌的教程,共有两种方式. 一.直接反向代理,使用的是7ghost源码搭建,优点是简单容易上手,缺点是容易被屏蔽,不能搜索敏感词. 二.使用SSL加密反向代理,优点是安全.不易被屏蔽,缺点是技术性相对较强,需要折腾的地方也多. 现在主要简单说下第二种方法的设置过程. Step1:你得需要有一台Linux的海外VPS. Step2:Nginx环境的建立(为了方便,教程中就用AMH一键包进行环境构建

Nginx服务器在使用HTML5 Manifest离线缓存时无法及时更新的问题

问题描述 使用HTML5Manifest离线缓存机制,在服务器端都配置了mine,但是:在apache服务器上,可以正确表现离线缓存的能力:更新manifest文件后浏览器自动更新线上最新的网页和资源:同样的web网站代码,在nginx服务器上却无法更新网页资源,调试发现浏览器请求的.manifest文件也始终是旧的.猜想可能是nginx服务器配置有问题,但是不知哪个配置会造成这个问题?

svn post-commit钩子实现代码上传到web目录例子

说明 最近在window下用虚拟机装了一个ubuntu系统,搭建好了PHP环境,为了在window下方便查看代码,于是想搭建个svn,直接将代码提交到对应的web目录下,于是用到了SVN的钩子, svn目录:/home/svn 站的目录:/var/www/html 实现 1.找到svn项目的hooks目录,这里是/home/svn/hooks.目录中默认会几个对应操作的钩子模板,我们需要创建一个post-commit的文件 2.新建post-commit,内容如下 #!/bin/sh REPOS

Nginx服务器下使用rewrite重写url以实现伪静态的示例_nginx

经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用.比如在Apache中这样写规则 rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last; 而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号: rewrite "^/([0-9]{5}).html$" /viewthread.php?tid=$1 last; 同时将RewriteRule为Rewrit

负载均衡-请问一下nginx里配置upstream 如何能获得最终负载到哪台服务器上呢

问题描述 请问一下nginx里配置upstream 如何能获得最终负载到哪台服务器上呢 请问一下nginx里配置upstream 如何能获得最终负载到哪台服务器上呢 解决方案 这个是nginx自己内部的处理了,你只能从access.log等中去查看