#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#errordocument2. не совсем с таким количеством косых черт, но да, я сделал это и ничего не сделал, плюс я не думаю, что смогу заставить мой файл .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 на данный момент.