Czy musisz ponownie uruchomić Apache, aby reguły ponownego zapisu w .htaccess zaczęły obowiązywać?


Odpowiedzi:


94

Ponowne uruchomienie nie jest wymagane w przypadku zmian w .htaccess. Coś innego jest nie tak.

Upewnij się, że Twój .htaccess zawiera oświadczenie

RewriteEngine włączony

który jest wymagany, nawet jeśli jest również obecny w httpd.conf. Sprawdź również, czy plik .htaccess jest czytelny dla procesu httpd.
Sprawdź error_log - poinformuje Cię o błędach w pliku .htaccess, jeśli jest używany. Umieszczenie celowego błędu składniowego w .htaccess jest dobrym sprawdzeniem, czy plik jest używany - powinieneś otrzymać błąd 500 na dowolnej stronie w tym samym katalogu.

Na koniec możesz włączyć przepisywanie dziennika za pomocą poleceń, takich jak poniższe w pliku httpd.conf:

RewriteLog „logs / rewritelog”

RewriteLogLevel 7

Wygenerowany w ten sposób plik dziennika zawiera krwawe szczegóły dotyczące dopasowanych reguł przepisywania i sposobu ich obsługi.


3
To jest trochę przestarzałe. Natknąłem się na podobny problem i chciałem debugować moje przeróbki dla konkretnego przypadku użycia. Wypróbowałem tę metodę, ale po małej frustracji i kopaniu, zorientowałem się, w czym tkwi problem. Dotyczy to starszych wersji Apache. Dla apache2.4> wymienić RewriteLog & LogLevel powyżej: LogLevel alert rewrite:trace7. Po ponownym uruchomieniu Apache powinieneś zobaczyć ślady w error.log Mam nadzieję, że to pomoże. http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
Casper Wilkes

52

Nie :

Apache pozwala na zdecentralizowane zarządzanie konfiguracją za pomocą specjalnych plików umieszczonych w drzewie WWW. Pliki specjalne są zwykle wywoływane .htaccess, ale w dyrektywie AccessFileName można określić dowolną nazwę ... Ponieważ pliki .htaccess są odczytywane przy każdym żądaniu, zmiany wprowadzone w tych plikach mają natychmiastowy skutek ...


Jeśli dodałeś nazwę użytkownika do opcji „Wymagaj użytkownika” w pliku z włączonymi witrynami, empirycznie stwierdziłem, że potrzebujesz ponownego uruchomienia. Robi to wdzięczny.
Ross

18

Z dokumentacji Apache: Najczęściej problem polega na tym, że AllowOverride nie jest ustawione w taki sposób, że dyrektywy konfiguracyjne są honorowane. Upewnij się, że dla danego zakresu pliku nie obowiązuje opcja AllowOverride None. Dobrym testem jest umieszczenie śmieci w pliku .htaccess i ponowne załadowanie. Jeśli błąd serwera nie jest generowany, prawie na pewno obowiązuje opcja AllowOverride None.


1
Upuszczanie linku do Apache - AllowOverride: httpd.apache.org/docs/2.2/mod/core.html#AllowOverride
scunliffe

2
Dodaję tę linię „<katalog /> </directory>” do mojego .htaccess, aby wygenerować błąd w dzienniku. Powie "<Katalog niedozwolony tutaj" i wiem, że czyta mój plik.
Mnebuerquo

3

Tylko jeśli nie dodałeś modułu mod_rewrite do Apache.

Musisz ponownie uruchomić Apache tylko wtedy, gdy zmienisz jakiekolwiek pliki Apache „.conf”.



2

W przypadku .htaccess restart nie jest wymagany, jeśli nie działa, prawdopodobne przyczyny obejmują.

  • AllowOverride Nie można ustawić, którego użytkownika można ustawić w pliku httpd.conf lub może być konieczne skontaktowanie się z administratorem serwera.

  • Sprawdź nazwę pliku .htaccess, powinna to być .htaccess, a nie htaccess.txt. Tutaj znajdziesz poradnik, jak go utworzyć.

  • Spróbuj użyć prostej dyrektywy Options -Indexeslub deny allczegoś w rodzaju prostej dyrektywy, aby sprawdzić, czy działa, czy nie.

  • czyść pamięć podręczną przeglądarki za każdym razem, jeśli masz regułę dla przekierowań lub podobną, jeśli poprzednie przekierowanie jest buforowane, wygląda na to, że coś nie działa.


0

Co jest w twoim .htaccess? RewriteRules? Sprawdź, czy mod_rewrite jest zainstalowany i włączony.

Inne rzeczy? Spróbuj ustawić AllowOverride na „all” w tym katalogu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.