Страница 404 не будет отображаться / нет .htaccess WordPress

#php #wordpress #.htaccess #mod-rewrite #redirect

#php #wordpress #.htaccess #мод-перезапись #перенаправление

Вопрос:

Я хочу показывать свою страницу с ошибкой 404, когда кто-либо попадает на нерабочую / не созданную страницу. После долгого поиска в Интернете я не смог найти никакого решения, поэтому я сам его публикую. У меня также нет файла .htaccess, я создал его, заполнил его, но в моем FTP он продолжал говорить, что там ничего не сохранено, и он не показывал никаких байтов, так что это то, о чем я тоже беспокоюсь.

Итак, как я могу заставить мой файл .htaccess работать и показывать мой шаблон страницы с ошибкой 404? Я выполнил все шаги, чтобы сделать 404.php файл, но я не возражаю, чтобы он был перенаправлен на тот же шаблон, который я создал для него, но тогда в качестве страницы подойдет любое из этих решений.

Комментарии:

1. Вы пробовали ErrorDocument 404 /path/to/404.html в файле .htaccess; предполагая, что ваш сервер позволяет вам загружать его… что кажется проблематичным из того, что вы сказали? Файл .htaccess — это просто текстовый файл, называемый .htaccess — ничего более, у вас не должно возникнуть проблем с его созданием… httpd.apache.org/docs/2.2/mod/core.html#errordocument

2. не совсем с таким количеством косых черт, но да, я сделал это и ничего не сделал, плюс я не думаю, что смогу заставить мой файл .htaccess работать вообще

3. Есть некоторый прогресс в этом, но теперь появилась ошибка 500

4. Похоже на синтаксическую ошибку в документе .htaccess — это вызовет внутреннюю ошибку сервера…

5. # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] ErrorDocument 404 /httpdocs/wp-content/themes/avian/404.php </IfModule> # END WordPress это мой .htaccess

Ответ №1:

У вас есть некоторые правила перезаписи в вашем файле .htaccess, которые предотвращают появление ошибки 404 в любом случае…

 RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
  

В основном это означает, что если запрашиваемый ресурс не является ни файлом, ни каталогом (в основном ошибка 404), перенаправьте на /index.php

Попробуйте это в вашем .htaccess:

 # BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase / 

# delete the line below to have /index.php/anything trigger a 404
RewriteRule ^index.php$ - [L] 

</IfModule> 
# END WordPress

#404 redirect
ErrorDocument 404 /httpdocs/wp-content/themes/avian/404.php 
  

Примечание
Однако это может сделать WordPress довольно несчастным, я не уверен, как он использует внутреннюю маршрутизацию, он может полагаться на разрыв 404-х, чтобы определить, какие страницы загружать, используя поддельные (RESTful) URL-адреса — восстановление ошибок 404 приводит к тому, что WordPress перестает работать должным образом… Я, однако, не эксперт в этом, едва ли когда-либо прикасался к нему.

Комментарии:

1. Вы все еще получаете 500 сообщение об ошибке… если это так, возможно, путь к документу 404 неверен (что может вызвать ошибку 404 … что приведет к ошибке 404… объявление бесконечно), так что это приводит к 500 ошибке.

2. Там все еще есть перезапись, так что /index.php она будет перенаправлять, а не 404, независимо от того, что после /index.php/... — если вы хотите отключить и это — удалите строку RewriteRule ^index.php$ - [L] из файла .htaccess. Такие URL-адреса, как viscongroup.eu/badgerbagdgerbadger должно быть 404 на данный момент.