Mam dwa główne problemy z mod_rewrite:
1) Nie jest zgłaszany żaden znaczący błąd, gdy mam nieprawidłową regułę
2) Aby rzetelnie przetestować każdą modyfikację, muszę wyczyścić pamięć podręczną Chrome. To nie jest fizyka jądrowa, ale muszę nacisnąć Ctrl + Shift + Delete, a następnie kliknąć OK, a następnie zamknąć okno i załadować ponownie.
Chciałbym zobaczyć, czy któryś z guru jest skłonny podzielić się swoimi sekretami, aby efektywnie zarządzać kodem mod_rewrite.
apache
mod-rewrite
rzygać
źródło
źródło
Odpowiedzi:
Jedna sztuczka polega na włączeniu dziennika przepisywania. Aby go włączyć, wypróbuj te linie w głównej konfiguracji Apache lub w bieżącym pliku wirtualnego hosta ( nie w
.htaccess
):Od czasu Apache httpd 2.4 mod_rewrite dyrektywy RewriteLog i RewriteLogLevel zostały całkowicie zastąpione przez nową konfigurację rejestrowania na moduł.
źródło
RewriteEngine On
tam również mieć sekcję, ponieważ jeśli tylko ją włączysz (tak jak ja) w.htaccess
pliku, nic nie zostanie zarejestrowane.Dyrektywa LogRewrite, o której wspomniał Ben, nie jest już dostępna w Apache 2.4. Zamiast tego musisz użyć dyrektywy LogLevel. Na przykład
Zobacz http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html#logging
źródło
tail -f error_log|fgrep '[rewrite:'
AllowOverride
został ustawionyAll
!Aby przeprowadzić podstawowe rozpoznawanie adresów URL, użyj narzędzia pobierania wiersza poleceń, takiego jak
wget
lub,curl
aby przeprowadzić test, zamiast ręcznej przeglądarki. Wtedy nie musisz czyścić pamięci podręcznej; po prostu strzałka w górę i Enter w powłoce, aby ponownie uruchomić pobieranie testów.źródło
Jest tester htaccess .
Pokazuje, które warunki zostały przetestowane dla określonego adresu URL, które spełniły kryteria i które reguły zostały wykonane.
Wygląda jednak na to, że ma pewne usterki.
źródło
Opierając się na odpowiedzi Bena, możesz wykonać następujące czynności, uruchamiając apache w systemie Linux (w moim przypadku Debian).
Najpierw utwórz plik rewrite-log.load
/etc/apache2/mods-availabe/rewrite-log.load
Następnie wejdź
śledzony przez
A kiedy zakończysz debugowanie reguł przepisywania
źródło
LogLevel warn rewrite:trace8
lubLogLevel info rewrite:trace8
gdzie 8 może być dowolną liczbą z zakresu 1-8