這都是折騰了俺的問題, 俺要記錄下來, 以泄其憤:shell
1. 重啓apache: apache
sudo /etc/init.d/apache2 restart
2. apache 虛擬主機之後出現 [warn] NameVirtualHost *:80 has no VirtualHostsubuntu
解決辦法: 直接吧 httpd.conf 中 NameVirtualHost *:80 這行註釋掉vim
緣由:NameVirtualHost語法錯誤 ,對於同一主機支持多個虛擬主機的狀況,只須要命名一次NameVirtualHost,若是在每一個虛擬主機配置文件中都加上NameVirtualHost *:80 ,則會報這個警告。服務器
原來在/etc/apache2/ports.conf中定義了*:80的 VirtualHost , 我又在httpd.conf中從新定義了一遍, 因此呢, 就錯了. 只要註釋掉 httpd.conf中的 NameVirtualHost *:80 就ok了;ide
3. ubuntu服務器開啓Apache重寫擴展 :spa
第1步: 打開終端, 開啓擴展:rest
sudo a2enmod rewrite
或者是: code
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文件。it
而後重啓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的連接。