分类 php 下的文章

codeigniter去掉index.php后缀的实现方法

在服务器迁移的过程中遇到一个问题,因为服务器端用的是codeigniter的框架,在迁移后由于index.php的原因无法访问了。网上有横多的解决方法,但是针对我的这个环境的并不多。针对这个问题,只要处理好两点就好了。

开启apache2 的rewrite模块

a2enmod rewrite

这里是启动rewrite_mod

如果是手动开启的话,就是建立一个软连接

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

然后是修改

 vim /etc/apache2/sites-enabled/000-default.conf

 <Directory "/var/www/html">
    AllowOverride All
</Directory>

注意上面的文件目录要改成自己的站点的目录,接下来就是重启apache服务器

service apache2 restart

修改.htaccess文件

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .

上面的代码简单的说,就是开启重写,如果请求的链接地址,没有目录,也没有文件,就执行重写规则。


以上方法只针对ubuntu 14.04,apache2 的环境,其他的环境下可能不同,请注意甄别。

ubuntu 14.04 apache2环境下域名绑定

每次服务器的迁移都会有一堆的问题,今天索性整理一下,多域名绑定和www的适配是新的知识点。

新建一个站点的实现方法

在配置站点的时候,需要在sites-enabdled目录下面新建一个config文件

vim /etc/apache2/sites-enabled/xxx.conf

可以在00-default.conf文件的基础上修改。

ServerName www.bennyxu.com
ServerAdmin 271913775@qq.com
DocumentRoot /var/www/benny_typecho_blog

如上所示,需要注意的是在default.conf文件中ServerName是注释掉的,而在新建站点的时候要放开注释。DocumentRoot指向的是站点的绝对目录。

域名访问hosts设置

在配置好上面的文件后,接下来需要配置一下hosts,目录文件为:

vim /etc/hosts

一个站点绑定多个域名的实现方法

ServerName www.bennyxu.com
ServerAlias www.v-shang.com
ServerAdmin 271913775@qq.com
DocumentRoot /var/www/benny_typecho_blog

如上所示,要绑定多个域名需要用到ServerAlias这个属性,同时如果要设置多个别名只需要在后面添加即可ServerAlias bennyxu1.com bennyxu2.com

设置域名访问带www,不带www皆可以

实现域名带www和不带www都能访问的原理和上面提到的绑定多个域名的原理是一样的,也是通过ServerAlias的方式来实现。

ServerName www.bennyxu.com
ServerAlias bennyxu.com
ServerAdmin 271913775@qq.com
DocumentRoot /var/www/benny_typecho_blog

apache2服务器和网络的重启

在完成了上面的配置后,还需要重启apache和网络来生效,命令如下:

 /etc/init.d/apache2 restart
 /etc/init.d/networking restart

Ubuntu下开启apache2的rewrite

在ci框架的使用过程过程中,看到index.php的尾巴非常的纠结,去掉尾巴需要开启apache的rewrite模块,而在解决这个问题的时候网络上是各种类型的方法,很难找到针对apache2的解决方案。

Server version: Apache/2.4.18 (Ubuntu)

1.sudo a2enmod rewrite

2.sudo vim /etc/apache2/sites-enabled/000-default.conf

3.将下面这段粘贴进去

<Directory "/var/www/html">
    AllowOverride All
</Directory>

4.重启apache,sudo service apache2 restart