
在「如何啟動 htaccess」的幾乎每個解決方案中,他們都說需要編輯 /etc/apache2/sites-available/default 檔案。但是Apache 2.4.7中沒有這個文件
我在某處讀到新的預設檔是 000-default.conf。所以我編輯了該內容並嘗試添加以下行:
AllowOverride All
但是Apache2沒有正確重啟並報錯。從apache2文檔中,我發現AllowOverride僅在該<Directory>
部分下允許。然後我嘗試添加這個:
<Directory "/var/www">
AllowOverride All
</Directory>
這似乎有效。但我不確定是否應該把 /var/www 放在那裡。這是正確的做法還是我的電腦會以某種方式爆炸?
答案1
太長了;博士
是的,這是正確的方法。
但要更語意.htaccess
:是的,這是允許覆蓋目錄中所有指令的正確方法/var/www
。
正如你所發現的,AllowOverride
僅在該部分允許Directory
。
使用你的例子:
<Directory "/var/www">
AllowOverride All
</Directory>
這告訴 apache,所有配置都可以在/var/www
及其所有子目錄中被覆寫(遞歸地)。
作為一個更好的範例,請考慮您的虛擬主機中有以下配置:
<Directory "/var/www">
AllowOverride All
</Directory>
<Directory "/var/www/uploads">
AllowOverride Limit
</Directory>
以及以下目錄結構:
var/
www/
.htaccess
uploads/
.htaccess
a/
.htaccess
b/
.htaccess
code/
.htaccess
c/
.htaccess
d/
.htaccess
我在這裡所做的是在目錄.htaccess
的每個子目錄中建立一個/var/www
。
通常不應該這樣,但這只是為了範例
比較目錄結構和配置,這意味著該資料夾及其子目錄.htaccess
中的所有檔案(不包括該目錄及其子目錄)都可以覆寫各種指令。/var/www
/var/www/uploads
但是/var/www/uploads
和 其子目錄只能使用.htaccess
檔案來覆蓋Allow
,Deny
和Order
指令。
注意:從 apache 2.4 開始(在 13.10+ 中預設可用),Allow
,Deny
和Order
指令被名為 的單一指令取代Require
。
答案2
首先使用以下命令啟用重寫:
sudo a2enmod rewrite
然後重新啟動apache2:
sudo service apache2 restart
然後進入sites-available
資料夾:
/etc/apache2/sites-available
編輯名為的檔案default
並將其更改AllowOverride none
為AllowOverride All
.有兩行必須進行此更改。
這將.htaccess
在您的伺服器 VPS 中運行。
這適用於 Ubuntu 12.04.5 VPS。
答案3
就我而言,它的工作原理如下:
我必須添加以下行:
Order allow, deny
Allow from all
所以它看起來像這樣:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
答案4
我在這些教程中遇到的一個常見問題是沒有 default.conf 文件
/etc/apache2/sites-available
我能夠找到更改它的地方,但它是此處的 apache2.conf 文件
/etc/apache2/apache2.conf
不太確定這是否是個好主意,但它確實對我有用,而且在我所處的環境中它是安全的。