這是在 Apache 2.4.7 中啟用 htaccess 的正確方法嗎

這是在 Apache 2.4.7 中啟用 htaccess 的正確方法嗎

在「如何啟動 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,DenyOrder指令。

注意:從 apache 2.4 開始(在 13.10+ 中預設可用),Allow,DenyOrder指令被名為 的單一指令取代Require

答案2

首先使用以下命令啟用重寫:

sudo a2enmod rewrite

然後重新啟動apache2:

sudo service apache2 restart

然後進入sites-available資料夾:

/etc/apache2/sites-available

編輯名為的檔案default並將其更改AllowOverride noneAllowOverride 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

不太確定這是否是個好主意,但它確實對我有用,而且在我所處的環境中它是安全的。

相關內容