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

2024-04-29 16:32

本文主要是介绍CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法 .,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

众所周知,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文件,在里面输入规则,如:

<ol class="linenums"><li class="L0" value="1"><span class="com"># nginx rewrite rule </span></li><li class="L1"><span class="pln">rewrite </span><span class="pun">^(.*?)/</span><span class="pln">article</span><span class="pun">/.*?-(</span><span class="pln">\d</span><span class="pun">+)-(</span><span class="pln">\d</span><span class="pun">+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">show</span><span class="pun">.</span><span class="pln">html</span><span class="pun">?</span><span class="pln">id</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">page</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">break</span><span class="pun">;</span><span class="pln"> </span></li><li class="L2"><span class="pln">rewrite </span><span class="pun">^(.*?)/</span><span class="pln">category</span><span class="pun">/.*?-(</span><span class="pln">\d</span><span class="pun">+)-(</span><span class="pln">\d</span><span class="pun">+)</span><span class="pln">\.html$ $1</span><span class="pun">/</span><span class="pln">list</span><span class="pun">.</span><span class="pln">html</span><span class="pun">?</span><span class="pln">id</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">page</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">break</span><span class="pun">;</span><span class="pln"> </span></li><li class="L3"><span class="pln">rewrite </span><span class="pun">^(.*?)/</span><span class="pln">tag</span><span class="pun">/([^/]+)/?</span><span class="pln">$ $1</span><span class="pun">/</span><span class="pln">tag</span><span class="pun">.</span><span class="pln">html</span><span class="pun">?</span><span class="pln">w</span><span class="pun">=</span><span class="pln">$2 </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">  </span><span class="pun"><</span><span class="pln">span id</span><span class="pun">=</span><span class="str">"more-1758"</span><span class="pun">></</span><span class="pln">span</span><span class="pun">></span></li><li class="L4"><span class="pln">rewrite </span><span class="pun">^(.*?)/</span><span class="pln">tag</span><span class="pun">/([^/]+)/(</span><span class="pln">\d</span><span class="pun">+)</span><span class="pln">$ $1</span><span class="pun">/</span><span class="pln">tag</span><span class="pun">.</span><span class="pln">html</span><span class="pun">?</span><span class="pln">w</span><span class="pun">=</span><span class="pln">$2</span><span class="pun">&</span><span class="pln">page</span><span class="pun">=</span><span class="pln">$3 </span><span class="kwd">break</span><span class="pun">;</span><span class="pln"> </span></li><li class="L5"><span class="com"># end nginx rewrite rule </span></li></ol>

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

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/ 那如下配置就行:

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


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

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

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


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

这篇关于CI框架 CodeIgniter 伪静态 htaccess设置和Nginx伪静态方法 .的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/946593

相关文章

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

Nginx添加内置模块过程

《Nginx添加内置模块过程》文章指导如何检查并添加Nginx的with-http_gzip_static模块:确认该模块未默认安装后,需下载同版本源码重新编译,备份替换原有二进制文件,最后重启服务验... 目录1、查看Nginx已编辑的模块2、Nginx官网查看内置模块3、停止Nginx服务4、Nginx

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Nginx禁用TLSv1.0 1.1改为TLSv1.2 1.3的操作方法

《Nginx禁用TLSv1.01.1改为TLSv1.21.3的操作方法》使用MozillaSSL配置工具生成配置,修改nginx.conf的ssl_protocols和ssl_ciphers,通... 目录方法一:方法二:使用 MoziChina编程lla 提供的 在线生成SSL配置工具,根据自己的环境填充对应的

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

nginx配置错误日志的实现步骤

《nginx配置错误日志的实现步骤》配置nginx代理过程中,如果出现错误,需要看日志,可以把nginx日志配置出来,以便快速定位日志问题,下面就来介绍一下nginx配置错误日志的实现步骤,感兴趣的可... 目录前言nginx配置错误日志总结前言在配置nginx代理过程中,如果出现错误,需要看日志,可以把

Nginx进行平滑升级的实战指南(不中断服务版本更新)

《Nginx进行平滑升级的实战指南(不中断服务版本更新)》Nginx的平滑升级(也称为热升级)是一种在不停止服务的情况下更新Nginx版本或添加模块的方法,这种升级方式确保了服务的高可用性,避免了因升... 目录一.下载并编译新版Nginx1.下载解压2.编译二.替换可执行文件,并平滑升级1.替换可执行文件

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499