Korzystam z serwera LAMP na Fedorze 13, który działa dobrze; Jednak właśnie dodałem plik „.htaccess” do folderu docroot mojej bieżącej witryny, który jest całkowicie ignorowany.
Wypróbowałem pół tuzina różnych testów, w tym ten:
RewriteEngine on
RewriteBase /
RewriteRule ^.*$ index.php
Ale obrazy i wszystkie inne strony ładują się dobrze, a nieistniejące pliki wciąż 404. Próbowałem także:
order deny,allow
deny from all
Ale każda strona wciąż ładuje się dobrze. Ponownie plik .htaccess jest po prostu ignorowany w 100%.
Umieszczamy nasze rekordy virtualhost w /etc/httpd/conf.d/virtual.conf. To wygląda tak:
NameVirtualHost *
<VirtualHost *>
ServerName intranet
DocumentRoot /var/www/default
<Directory "/var/www/default">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *>
ServerName ourwebsite.com
DocumentRoot /var/www/html/ourwebsite.com/docroot
<Directory "/var/www/html/ourwebsite.com/docroot">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Co jeszcze może powodować, że nasz serwer całkowicie IGNORUJE .htaccess
plik?
Edytować:
Zmieniłem plik .htaccess na powyższy, aby lepiej pokazać, że moje zmiany są ignorowane. Zauważ, że próbowałem dokładnie tego samego pliku .htaccess na serwerze produkcyjnym i działało dobrze.
Edycja 2:
OK, mam nowe informacje! Dla celów testowych przeszedłem i tymczasowo zmieniłem KAŻDĄ dyrektywę „AllowOverride” na AllowOverride All
. Doszedłem do wniosku, że pierwszy wpis w katalogu wydaje się obezwładnić wszystkie pozostałe:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
Kiedy zmieniłem to na AllowOverride All
, moje pliki .htaccess zaczynają działać. To tak, jakby wszystkie inne AllowOverride All
dyrektywy w moich plikach konfiguracyjnych były ignorowane!
Co daje??
źródło
Sprawdź, czy jakieś inne „AllowOverride None” przedstawione w „httpd.conf” powyżej deklaracji virtualhosts. Prawdopodobnie w docroot masz „AllowOverride None”.
źródło
dev.
. Jednak serwer produkcyjny działa dobrze, pliki .htaccess zachowują się dokładnie zgodnie z oczekiwaniami, a serwer programistyczny po prostu całkowicie ignoruje plik .htaccess.Trzy domysły:
Czy faktycznie jest przecinek po przecinku w linii
order deny, allow
w.htaccess
? Apache tego nie lubi. Dla mnie na F13 dostałem 500s.Czy masz
AccessFileName
gdzieś dyrektywę?Jeśli używasz selinux, czy masz poprawny kontekst dla pliku (
ls -lZ
)?źródło
AccessFileName
, rozejrzę się, ale jak powiedziałem w moim komentarzu do odpowiedzi Denisa, konfiguracja apache dla tych dwóch serwerów jest faktycznie identyczna.AccessFileName .htaccess
Miałem to na świeżym serwerze, w końcu zdałem sobie sprawę, że przepisywanie modów nie było domyślnie włączone.
źródło