解决方法一
这两天把自己的站点移到了Ubuntu 9.04底下,要弄伪静态的页面,需要启用Apache的rewrite模块。在其他的Linux版本中,这个问题似乎要容易解决一些,但是在ubuntu下,就有点不大一样。
需要通过命令,或者自己重新创建个软连接才可以。
命令是:sudo a2enmod rewrite 软连接是:sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load因为Ubuntu下,Apache的配置文件及目录结构不大一样,所以mods-avalilable下的是可用的模块,而真正启用了的模块是在mods-enable目录底下的。所以自己创建软连接也可以实现启用rewrite模块。
除了启用rewrite外,还有地方需要修改的,如果你的站点只有一个,那修改/etc/apache2/sites-available /default这个文件就可以,如果你是虚拟主机的,那就修改自己的/etc/apache2/sites-available /www.orioner.net.conf(我的虚拟主机配置文件)这个文件了。
Options FollowSymLinks AllowOverride None(修改为AllowOverride All) Options Indexes FollowSymLinks MultiViews AllowOverride None(修改为AllowOverride All) Order allow,deny allow from all 其实网上其它地方贴出来的解决办法是吧Options FollowSymlinks的给改了就行了。其实不行,还要把Options Indexes FollowSymLinks MultiViews的也给改了才可以。==============================================================================
解决方法二
在终端中执行
sudo a2enmod rewrite
指令后,即启用了 Mod_rewrite 模块。
另外,也可以通过将 /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
一点小提示
事实上,当我在 Ubuntu 中采用上述做法并重启了 Apache 服务后,仍然无法正常 rewrite 网址。这里,还有一点需要注意的地方:
sudo vim /etc/apache2/sites-enabled/000-default
将其中的:
AllowOverride None
修改为:
AllowOverride All
上面的 /etc/apache2/sites-enabled/000-default 实则为 /etc/apache2/sites-available/default 的连接。而 AllowwOverride None 则会完全忽略 .htaccess 文件,自然其中所定义的 rewrite 规则也就不能生效了。
最后,别忘了使用下列指令来重启 Apache:
sudo /etc/init.d/apache2 restart.