这都是折腾了俺的问题, 俺要记录下来, 以泄其愤:
1. 重启apache:
sudo /etc/init.d/apache2 restart
2. apache 虚拟主机以后出现 [warn] NameVirtualHost *:80 has no VirtualHosts
解决办法: 直接吧 httpd.conf 中 NameVirtualHost *:80 这行注释掉
原因:NameVirtualHost语法错误 ,对于同一主机支持多个虚拟主机的情况,只需要命名一次NameVirtualHost,如果在每个虚拟主机配置文件中都加上NameVirtualHost *:80 ,则会报这个警告。
原来在/etc/apache2/ports.conf中定义了*:80的 VirtualHost , 我又在httpd.conf中重新定义了一遍, 所以呢, 就错了. 只要注释掉 httpd.conf中的 NameVirtualHost *:80 就ok了;
3. ubuntu服务器开启Apache重写扩展 :
第1步: 打开终端, 开启扩展:
sudo a2enmod rewrite
或者是:
sudo ln -s /etc/apache2/mods-cuailable/rewrite.load /etc/apache2/mods-enabled/rewrite.load
sudo vim /etc/apache2/sites-enabled/000-default
备注:000-default实则为sites-available/default的链接,而AllowOverride None 则会完全忽略.htaccess文件,rewrite规则就不能生效,另外注意您的程序文件的权限不能忘记开启, 所以开启扩展后必须修改000-default文件。
然后重启apache服务;
sudo /etc/init.d/apache2 restart
其他参考:
Ubuntu下apache2的rewrite模块默认是不加载的。
只要运行了一下这个命令:a2enmod rewrite 就可以启用rewrite模块了。
或:
sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
Apaceh2 多了一组 a2enmod, a2dismod指令,用于启用和禁用Apache的模块。a2enmod用于在Apache启用指定的 模块,它实际上做的是在/etc/apache2 /mods-enabled目录下创建模块文件的符号链接。相反a2dismo则是通过删除符号链 接而达到禁用指定模块的功能。当然,启用已启用的模块或禁用已禁用的模块是不会报错的。
这里有必要说明一下:
/etc/apache2/mods-available 放apache可用的模块文件
/etc/apache2/mods-enabled 放apache已启用的模块文件的链接
弄明白了,去查看一下/etc/apache2/mods-enabled目录,果然有新增了一条rewrite.load的链接。