apache2在ubuntu11.10下的操作及问题汇总

摘要:这都是折腾了俺的问题, 俺要记录下来, 以泄其愤: 1. 重启apache:   sudo /etc/init.d/apache2 restart   2. apache 虚拟主机以后出现 [warn] NameVirtualHost *:80 has no VirtualHosts    解决办法: 直接吧 httpd.conf 中 NameVirtualHost *

这都是折腾了俺的问题, 俺要记录下来, 以泄其愤:

002UASMrzy7605pjKJv15&690.jpg

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

 

第2步: 修改一些东西

 

 

sudo vim /etc/apache2/sites-enabled/000-default

 

将其中所有的AllowOverride None 修改成 AllowOverride All.

 

 

备注: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的链接。