2012-05-26 61 views
28

我創建了一個.htaccess文件只以下行:.htaccess文件沒有被讀取(在.htaccess文件 「選項-Indexes」 不工作)

選項-Indexes

然而,索引仍然顯示在目錄中。

我剛剛安裝了Apache2,並使用了所有的默認設置(我沒有修改apache2.conf或httpd.conf)。

OS:Ubuntu 12.04 (Precise Pangolin)
的Apache2版本:Server version: Apache/2.2.22 (Ubuntu) Server built: Feb 13 2012 01:51:56

$ ls -l命令的.htaccess
-rwxr-XR-X的.htaccess

編輯:

我把lanzz的建議並在.htaccess文件中添加亂碼,並發現.htaccess文件沒有被讀取。

+4

嘗試在.htaccess中放置一行亂碼,看看你是否訪問您的網站時出現內部服務器錯誤。如果你沒有收到錯誤,你的.htaccess根本就沒有被讀取。 – lanzz

+1

只是'Options -Indexes'呢? –

+2

你在你的httpd.conf中設置了AllowOverride All嗎? – Ansari

回答

26

爲了得到這個工作,我在/etc/apache2/httpd.conf(默認情況下是一個零長度文件,當安裝Apache時)添加以下內容,然後重新啓動Apache。現在Options -Indexes.htaccess文件中按需要工作。這裏需要的最低限度,以得到它的工作:

/etc/apache2/httpd.conf :

<VirtualHost *:80> 
     DocumentRoot /var/www 
     <Directory/> 
     </Directory> 
</VirtualHost> 

lanzz的建議下到行亂碼添加到.htaccess文件,看它是否正在閱讀是有幫助的診斷問題。

請注意,AllowOveride默認爲All,根據Evan Mulawski的評論,所以在上面的最小集httpd.conf行中不需要。

+0

這幫了我很多,你應該把你的答案標記爲接受。 –

+2

不鼓勵在Ubuntu上編輯'httpd.conf';事實上該文件已從13.10中消失。相反,首選的方法是將VirtualHost配置放在'/ etc/apace2/sites-available'中的.conf文件中,並使用'a2ensite mysite.conf'啓用它。然後可以很容易禁用站點:'a2dissite mysite.conf'。 (請注意,「.conf」現在需要在VirtualHost配置文件中爲13.10。) – JoBu1324

+0

其實,Ubuntu有各種易用的apache [管理調整](https://help.ubuntu.com/13.04/serverguide /httpd.html)使生活更輕鬆。 – JoBu1324

32

您應該檢查Apache配置是否允許執行.htaccess。在你的虛擬主機配置,應該有一行:

AllowOverride All

如果沒有,這就是爲什麼的.htaccess不會發生作用。

+2

OP使用默認值,根據http://httpd.apache .org/docs/2.0/mod/core.html,默認情況下爲'All'。 –

+2

默認情況下'httpd.conf'是虛擬主機配置嗎?它是空的。我添加了'AllowOverride All'並重新啓動了Apache,但它給出錯誤'AllowOverride not allowed here'。 –

+0

埃文,我剛剛遇到一個情況,它不是全部默認情況下,所以這個評論實際上是有幫助的。 – deweydb

4

如果您有

AllowOverride None 

修改成:

AllowOverride All 
在httpd.conf

或在默認的虛擬主機在 的/ etc/apache2的/網站可用/文件英寸..conf

14

我有同樣的問題。我使用的是虛擬主機,所以我修改了httpd-vhosts。CONF因此,如果您正在使用這將有助於

其中配置您的主機參考目錄標籤是與文檔根

<VirtualHost *:8080> 
ServerName somelocalserver 
DocumentRoot "C:/Websites/htdocs/yoursite" 
<Directory "C:/Websites/htdocs/yoursite"> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 

我需要AllowOverride All承認的.htaccess文件。

編輯

我還需要路徑添加到網站根目錄中的標籤本身。即<Directory "C:/Websites/htdocs/yoursite">。這是我使用的樣本中的默認值。

+0

這也適用於我。這開始發生在一個多年來一直工作正常的虛幻主機後,我添加了一些新的虛擬主機,不知道爲什麼...... – BadCash

7

由於沒有httpd.conf文件了,你需要在一個VPS做的是:

  1. 轉到/etc/apache2/sites-enabled/
  2. ls找到網站上的文件,你正在尋找
  3. 使用nano THE_CONF_FILE或使用任何編輯器編輯相應的文件
  4. 將您在不同的<Directory> ... </Directory>中看到的所有值更改爲AllowOverride All
  5. 保存文件並關閉它

  6. 現在,您需要啓用模塊重寫通過運行以下命令:sudo a2enmod rewrite

  7. 最後以激活新的配置,你需要運行: service apache2 restart

它現在就像一個魅力工作!

+5

'sudo a2enmod rewrite'。我花了大約10分鐘時間拋棄了我的'apache2.conf','sites-enabled/default.conf','conf-enabled/*。conf'和' AllowOverride All',並且無法爲我的生活圖出mod_rewrite沒有啓用。 – stevendesu

+1

與命令sudo a2enmod重寫的提示爲我做了。 – Teifun2

1

此外,更改的AllowOverride所有的虛擬主機配置文件旁邊,你可能還需要添加以下在.htaccess文件的開頭:

RewriteEngine On 
RewriteBase/

否則可能仍然無法檢測重寫或重定向。

2

我解決了在RHEL這個問題通過編輯文件/etc/http/conf/httpd.conf 我改變了所有

AllowOverride None 

AllowOverride All 

您也可以通過在RHEL

grep -i AllowOverride /etc/conf/conf/httpd.conf 
以下命令來檢查httpd.conf中的AllowOverride