小码哥的IT人生

CodeIgniter在IIS、Apache、SAE和NginX上的伪静态设置方法

CodeIgniter 2023-08-15 15:44:46小码哥的IT人生shichen

CodeIgniter是一个很不错的轻量级PHP框架,文档也比较全面。关于CI去除“index.php”的伪静态设置在官方的文档中却只提及了一点,而且给出的方法对于静态文件还会出现错误。

以下的内容并非是原创,而是整理了CI在不同服务器下的伪静态设置方法放在一起,供有需要的朋友复制、使用。

Apache服务器

Apache服务在打开URLRewrite模块后使用.htaceess文件处理伪静态规则。使用方法很简单,在网站根目录创建一个文本文件并命名为.htaccess,复制下面的内容进去保存就好了。(Windows的电脑上不允许这种以点号开头的文件,不过可以使用命令提示符重命名,或者先随便用什么名字,上传到服务器后再改回成.htaccess)。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

IIS服务器

IIS从IIS7版本开始开始使用新的URLRewrite机制,并使用web.config文件处理伪静态规则,IIS7以上版本URLRewrite插件的安装及.htaccess文件转web.config的方法请参见我的另一篇博文《IIS 7及IIS 7.5下面.htaccess转为web.config的方法》,另外贴出一份转换好的文件。在网站根目录创建文本文件并命名为web.config,把以下内容复制进去即可:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="CodeIginiterRewrite" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{R:1}" pattern="^(index\.php|images|robots\.txt)" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/index.php/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

NginX服务器

NginX是一个轻量级的WEB服务器,具有高并发等优势,NginX的配置可能会有些麻烦,在path_info开启的情况下修改nginx.conf文件,在对应网站的server段加入以下内容:

location / {
    if (!-e $request_filename) {
        rewrite ^/(.+)$ /index.php/$1 last;
    }
}

 

附:IIS 7及IIS 7.5下面.htaccess转为web.config的方法

.htacess文件是apache下面的伪静态文件,nginx环境下,这个文件经过简单设置后同样有效;如果是windows 2003,实际 上程序提供商会同时提供apache和windows 2003下面的伪静态文件,我们不必担心。如果用的是IIS 7或IIS 7.5,这下面的伪 静态文件是web.config文件,那么要怎么把.htacess文件转换为web.config文件呢?

程序商没有提供web.config伪静态文件,网上找人弄,随便找个店家,都要价200元,不到20句伪静态转换居 然要200元……因此还是自己弄!

上网查找了很多的资料,终于找到了很简单的解决方法,只要几分钟即可搞定,完全不必花费几十元甚至上百元让人来弄 。这个方法的解决方法是Urlrewrite插件,这是地址重写插件,安装以后可以加载到IIS7及IIS7.5面板上面,我们直接用这个 插件的功能即可把.htacess伪静态文件转换为.webconfig文件。

下载安装Urlrewrite插件

这个插件默认不集成在IIS7及7.5上面,要网友自己去下载安装,目前的版本是URL Rewrite 2.0,安装完成以后,重启IIS 7或IIS 7.5,选择自己的网站,那么会看到Urlrewrite模块,这是全英文的。安装方法很简单,按默认配置安装即可,不用修改安装文件的地址。

下载地址:http://www.iis.net/extensions/urlrewrite

进入使用Urlrewrite插件

进入服务器管理器,选择“Internet信息服务”-“起始页”-“自己的网站”,哪个网站要使用伪静态,那么进入到哪个网 站,点击网站名即可进入到对应的网站控制面板,选择Urlrewrite模块即可,进入以后即可看到Urlrewrite全英文的界面。

转换.htacess伪静态文件

如果要转换.htacess伪静态文件,那么选择Import mod_rewrite Rules,即是右边区域第三行黑字下面的选项,点击即可 进入,进入以后会看到相应的对话框,我们点击上面输入框右侧的按钮,选择.htacess伪静态文件,再点击上面输入框下面的 Import即可导入,导入以后,我们会在Rewrite rules看到导入成功的伪静态规则,选择右边的操作-应用即可。

转换.webconfig文件成功

IIS7及IIS7.5下面是不支持直接用.htacess伪静态文件的,伪静态文件都要变换为web.config文件,实际上经过上面的导 入操作,我们去网站目录,会发现网站的web.config文件已经有很多伪静态规则。这时你要去做的是检查伪静态规则是否正确 ,理论上只要是标注的.htacess伪静态文件,那么导入以后都会准确的。

上面的操作只要几分钟时间,不过当初我查找相关的资料,还是花费掉好几小时,因此写成本文,希望对使用IIS 7及IIS 7.5的站长有所帮助;当然,如果是虚拟主机遇到伪静态规则问题,直接联系空间商即可,空间商会处理好一切的。

版权所有 © 小码哥的IT人生
Copyright © phpcodeweb All Rights Reserved
ICP备案号:苏ICP备17019232号-2  

苏公网安备 32030202000762号

© 2021-2024