Nie mogę zmusić mod_rewrite do pracy na Lionie. Wiele witryn rozwijam lokalnie, w ~ / Sites, przy użyciu plików .htaccess. Mam 10.7.3 i nie dotknąłem żadnych plików konfiguracyjnych oprócz włączenia PHP w httpd.conf (co działa).
Wiem, że są tutaj co najmniej 2 pytania na ten temat, ale rozwiązania tam opisane nie działają. Podobnie jak inne rozwiązania, które znalazłem w sieci. Muszę robić coś głupiego lub coś przeoczyć, bo inaczej chyba wariuję, ale to nie działa.
Próbowałem wszystkich zwykłych rzeczy:
W
/private/etc/apache2/users/<myusername>.conf
, zmianyAllowOverride None
naAllowOverride All
i ponownie uruchomić serwer WWWDodatkowo w
/private/etc/apache2/httpd.conf
zmień dowolne / wszystkie wystąpienia (y)AllowOverride None
doAllowOverride All
- Próbowałem go we wszystkich różnych miejscach, gdzie znajdują się te dyrektywyWypróbuj w zasadzie wszystkie możliwe kombinacje wartości dla
Options
linii powyżej / poniżejAllowOverride
linii, w tym wartości:Indexes MultiViews FollowSymLinks All
Oczywiście zawsze restartuje serwer WWW po takiej zmianie. Nic z tego nie działa. Wszystkie moje czyste adresy URL po prostu nie działają; Dostaję 404 - nie znaleziono. Dziennik błędów Apache po prostu pokazuje mi błędy „Plik nie istnieje:”. Wygląda więc na to, że moduł mod_rewrite w ogóle nie działa.
Upewniłem się, że mod_rewrite jest załadowany do httpd.conf, którym jest; tak jest domyślnie w przypadku instalacji Lion.
Szaloną rzeczą jest to, że wszystko działało idealnie - dopóki nie przeprowadziłem migracji na nową maszynę z systemem Lion. Oznacza to, że wykluczam błąd w moich plikach .htaccess, ponieważ wiem, że wcześniej działał. Ponadto, jeśli byłby to błąd w .htaccess, dostałbym jakiś komunikat o błędzie z modułu mod_rewrite w dzienniku błędów Apache, przynajmniej mówiąc mi, że sam moduł jest wywoływany. Ale tak się nie dzieje.
Czy coś przeoczyłem? Czy muszę zmienić ustawienia konfiguracji w innym miejscu? Czy muszę zmienić konfigurację PHP? Dlaczego instrukcje (jak Jak aktywować mod_rewrite na MacOSX Lion i zmusić mod_rewrite do pracy na Mac OS X ) działają dla innych osób, ale nie dla mnie? :)
Zmarnowałem już godziny. Każda forma pomocy jest mile widziana.
źródło
Odpowiedzi:
Powinieneś upewnić się, że w /etc/apache2/users/username.conf masz następujące elementy:
Kluczowe są tutaj FollowSymlinks i AllowOverride. Podczas gdy wskazujesz na oba pytania, być może nie skonfigurowałeś ich poprawnie w tandemie.
Upewnij się, że w pliku httpd.conf /private/etc/apache2/extra/httpd-userdir.conf jest również uwzględniony. Jest to domyślnie.
Po wszelkich modyfikacjach uruchom ponownie serwer WWW, aby zmiany zostały wprowadzone.
Jeśli nadal masz problemy, być może istnieje problem z twoimi rzeczywistymi regułami przepisywania. Czy używasz ich również w kontekście .htaccess? Zauważ, że w .htaccess reguła przepisywania jest dopasowywana do identyfikatora URI żądania bez wiodącego ukośnika i zawsze względem katalogu, w którym znajduje się .htaccess , podczas gdy w globalnym httpd.conf identyfikator URI musi być zgodny z wiodącym ukośnikiem i jest względem katalogu głównego. Ponieważ zakładamy, że masz plik .htaccess w podkatalogu ~ / Sites, Twoje reguły przepisywania mogą zachowywać się inaczej niż wtedy, gdy plik .htaccess znajduje się w katalogu głównym (wirtualnego) hosta.
Aby debugować mod_rewrite, możesz włączyć rejestrowanie ponownego zapisu. Powinieneś włączyć to w /etc/apache2/httpd.conf:
źródło
Dodawanie opcji + FollowSymLinks działało dobrze dla mnie
źródło
Options +FollowSymLinks
? Po prostu dodaję tę linię, która mi odpowiadaWystąpił podobny problem polegający na tym, że mój plik .htaccess był całkowicie ignorowany, gdy znajdowałem się w podfolderze w katalogu ~ / Sites pod poprawnie skonfigurowanym VirtualHost.
Po spędzeniu ostatniej godziny na zabawie z różnymi plikami konfiguracyjnymi i ustawianiu AllowOverride All w różnych miejscach, w końcu dowiedziałem się, że plik .htaccess, podczas gdy wyglądał jak plik .htaccess w Finderze, w rzeczywistości był plikiem .htaccess.txt z plikiem rozszerzenie ukryte.
Aby sprawdzić i zmienić plik .htaccess, kliknij go prawym przyciskiem myszy i wybierz polecenie Uzyskaj informacje, a następnie pamiętaj o usunięciu wiodącego rozszerzenia od końca, takiego jak to, które miałem:
A teraz to działa!
źródło
Poniżej naprawiono wpisy .htaccess
źródło
Umieszczenie .htaccess w / Library / WebServer / Documents i otwórz „localhost /”; aby to przetestować, działa zgodnie z oczekiwaniami. Po prostu nie działa w „~ / Sites”. Dzięki Niels Heidenreich za to!
źródło
Podczas wpisywania: / Users / username / app_name
/ Odnosi się do katalogu głównego serwera:
"Lokalny Gospodarz/"
Jeśli użyjesz / ~ nazwa użytkownika / nazwa_aplikacji podczas przepisywania, powinno to działać.
źródło
/
są zawsze ścieżkami bezwzględnymi dla Apache, patrz definicja katalogu głównego serwera WWW w http.conf (<Directory "/Library/WebServer/Documents">
)