[解决方案]CI框架在ubuntu12.04下apache的重写问题

Posted by

0X00 问题

         开发一套系统使用了CI的框架,并且memcached与搜索引擎都搭建在ubuntu的环境下,准备将URL重写一下,发现了rewrite模块一直没有成功,后来发现其实是因为安装方式导致配置文件缺失造成的。由于自己被这个问题坑了很久,所以特意记录下来希望别的同学别被坑了。

 0X01 系统环境

Ubuntu   12.04
64

Apache     2.4.7

PHP           5.5.9

 0X02

注意:本解决方法针对使用yum来安装LAMP环境的同学。

由于之前使用了yum来安装apache2,所以各种安装目录都不一样,配置文件也不是httpd.conf,各种虚拟目录配置也不是编译安装的那样,这里就是个大坑。

 0X03 解决方案

1Ubuntu 下安装rewrite模块

直接使用yum命令安装(前提是使用了yum安装的apache

#ubuntu 

sudo a2enmod rewrite

sudo service apache2 restart

 2

/etc/apache2/mods-available/rewrite.load 链接到
/etc/apache2/mods-enabled/rewrite.load
来打开 Mod_rewrite 模块。

sudo ln -s
/etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

/etc/apache2/sites-enabled/000-default.conf中添加如下代码:

       
<Directory />

                Options FollowSymLinks

                AllowOverride All

       
</Directory>

       
<Directory /var/www/>

                Options Indexes FollowSymLinks
MultiViews

                AllowOverride All

                Order allow,deny

                allow from all

       
</Directory>

如果存在则将其中的:AllowOverride None修改为AllowOverride All即可。

重启服务

sudo service apache2 restart

3

CI根目录新建.htaccess文件:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond $1
!^(index\.php|index\.html|images|robots\.txt)

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

如果CI目录不是在www的根目录下则需要添加二级目录文件名到第四行位置:

RewriteRule ^(.*)$ /xlixli/index.php/$1 [L]

 4、修改CI配置文件config.phpindex_page参数为空。

//$config[‘index_page’] =
“index.php”;

$config[‘index_page’] = “”; 

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注