Aby rozszerzyć to, co powiedział Chris_O .... Zainstalowałbym W3 Total Cache i używałbym ustawień z tej wtyczki, by nie buforować plików statycznych. Wtyczka sama w sobie jest bardzo przydatna i musi przyspieszyć twoją stronę, szczególnie z najnowszą aktualizacją.
Polecam również zajrzeć do Tworzenie strony błędu 404 z Wordpress, aby zobaczyć, jak obsługiwać 404 dla plików statycznych, 403 (zabronione) itp. To dobry odczyt.
Może proste rozwiązanie. Użyj tagu warunkowego is_404()i utwórz przekierowanie do pliku statycznego; dołącz kod do pliku header.phplub index.phpmotywu.
Nie jestem pewien, czy to jest możliwe. Jeśli spojrzysz na kod htaccess, który WordPress tworzy po włączeniu permalinków, w zasadzie mówi: „Jeśli nie można znaleźć pliku / katalogu, wyślij go do index.php”. Dotyczy to wszystkich rzeczywistych 404 wniosków. Poza utworzeniem listy każdego dynamicznie generowanego zasobu publicznego, o którym wie WordPress, i bezpośrednim wstawieniem tego do .htaccess, musisz załadować php, aby obsłużyć 404.
Podobał mi się pomysł Chris_O , ale stworzyłem własną wersję, która jest bezpieczniejsza.
Więc co zrobiłem, właśnie dodałem foldery do wyjątku, więc jeśli twoje żądania zaczynają się od tych linii - to zdecydowanie nie jest prawidłowy bezpośredni link. Większość żądań pochodzi od botów, które próbują sprawdzić zawartość tych folderów pod kątem exploitów. Będą one skutecznie filtrowane, aw razie potrzeby możesz wyświetlić małą statyczną stronę 404.
Inne żądania będą nadal obsługiwane przez wordpress, a jeśli ktoś wpisze niewłaściwy adres, wyświetli przyjazną dla użytkownika wiadomość nie znalezioną w szablonie. Rozwiązanie Chris_O będzie działać tylko w przypadku żądań, które wyglądają jak rozszerzenia plików, w przeciwnym razie będą one obsługiwane przez wordpress.
Aby uczynić go jeszcze bardziej niezawodnym, możesz odzyskać plik dostępu surowego i wyszukać błędy 404. Jeśli zauważysz wiele żądań rozpoczynających się od konkretnych wierszy, możesz również dołączyć je do tego filtra:
#adding your own handlerErrorDocument404/404/index.html
<IfModule mod_rewrite.c>RewriteRule^index\.php$ -[L]RewriteCond%{REQUEST_URI}!^/(404|cgi-bin|wp-admin|wp-content|wp-includes)RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule./index.php [L]</IfModule>
Mam wiele CMSów zainstalowanych na mojej stronie, więc używam czegoś takiego, aby użyć tej samej strony błędu 404 dla wszystkich CMSów. Używam tego conf dla Nginx + FastCgi i działa dobrze:
Cześć Mazhar, czy mógłbyś zamieścić pełną odpowiedź, a nie tylko link do swojej witryny? Jeśli ten link umrze, ta odpowiedź będzie prawie bezużyteczna! Twoje zdrowie!
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.