2013-01-19 13 views
10

Mój problem polega na tym, że mój plik .htaccess na moim lokalnym serwerze nie jest czytany. Ustawienia w pliku VirtualHost wydają się mieć zawsze pierwszeństwo.Jak uzyskać pliki .htaccess współpracujące z Apache VirtualHost

Próbowałem następujące:

  • Włączone mod_rewrite
  • Zmieniono AllowOverride do All ale powoduje to HTTP Error 500 Internal server error. Próbowałem go z różnymi opcjami, ale zawsze powoduje błąd 500.

używam plik VirtualHost na Ubuntu, który wygląda tak:

<VirtualHost *:80> 
ServerAdmin [email protected] 

DocumentRoot /web/website 
<Directory /> 
    Options FollowSymLinks 
    AllowOverride None 
</Directory> 
<Directory /web/website> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 
</VirtualHost> 

W moim pliku .htaccess pod /web/website Mam następujące zasady (które nie są odczytywane):

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.*)$ index.php?/$1 [L] 
RewriteCond %{HTTP_USER_AGENT} ^facebookexternalhit 
RewriteRule ^(.*)$ ogtags.php?$1 [L,QSA] 
ErrorDocument 404 /404 
ErrorDocument 401 /401 

Jedną rzeczą, której próbowałem, było dołączenie tych reguł bezpośrednio do pliku VirtualHost, ale chciałbym, aby mój plik .htaccess zadziałał! Czy to takie wielkie pytanie? :(

Edycja:..? Więc spojrzał w moim apache error.log i mówi Invalid command 'Action', perhaps misspelled or defined by a module not included in the server configuration odnosząc się do mojego pliku .htaccess Nie wydaje się być w moduł Action które można włączyć jakieś pomysły

Edit 2: zauważyłem, że mój plik httpd.conf jest puste Gdyby ta sprawa ponieważ używam VirtualHost plików

+0

Próbowałem skomentować te zasady, ale nie wygląda na to, że były przyczyną problemu. Jakieś inne sugestie? Myślę, że masz rację, to musi być jedna z tych zasad, które są złe. Próbowałem nawet komentować wszystkie zasady i znowu nie miało to żadnego skutku! Więc nie wiem, co jeszcze spróbować! –

+0

Hmm, ale te zasady działają dobrze na serwerze na żywo, w tym na 404. Tak więc musi być coś innego w mojej lokalnej konfiguracji apache, która jest zła. –

+0

'' httpd.conf'' ma na celu dodanie konfiguracji użytkownika i jest zawarty w pliku '' apache2.conf''. Domyślnie jest puste. – cyberhicham

Odpowiedz

6

Po patrząc na moje apache error.log zdałem sobie sprawę, po prostu musiałem włączyć moduł Apache actions:

sudo a2enmod działania

I nie więcej 500 błędów serwera wewnętrznego!

Mam nadzieję, że to pomoże komuś w dół :)

1

przegapisz dyrektywę RewriteBase /

.?

Dodaj go po dyrektywie RewriteEngine:

RewriteEngine On 
RewriteBase/
+0

To nie zmieniło niczego, wciąż otrzymywałem 'HTTP Error 500 Internal server' :( –

+2

sprawdź dzienniki, które zwykle znajdują się w' '/ var/log/apache2/error.log'' – cyberhicham

+0

Dzięki! Zaktualizowano mój problem –