404 не найдена страница, не работающая с моим .htaccess

У меня ниже .htaccess на сервере с правилами не найденных страниц, но он, похоже, не работает. Есть идеи?

RewriteEngine on RewriteRule ^article_detail/([a-zA-Z0-9_-]+)/([0-9]+)\.html$ article_detail.php?article_det=$2 Options +FollowSymLinks ErrorDocument 404 http://www.example.com/main/404_not_found.html # compress text, HTML, JavaScript, CSS, and XML <IfModule mod_ext_filter.c> AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript # remove browser bugs BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </IfModule> 

Я предполагаю, что вы используете Apache, а не IIS;

  1. Убедитесь, что вы включили функцию mod rewrite (вы можете сделать это, разместив строку ниже в файле httpd.conf (обычно в каталоге /conf/ Это может быть и другое, если вы используете общий хостинг и удаляете полуколону с начала линия)

    ;LoadModule rewrite_module modules/mod_rewrite.so

  2. Найдите соответствующий тег каталога для вашего корня www и измените AllowOverride None на AllowOverride All

  3. Создайте файл .htaccess в корневом каталоге (если его не существует)

  4. Вам нужно будет вставить что-то похожее на это ;

    ErrorDocument 500 /errordocs/500.html

    ErrorDocument 404 /errordocs/404.html

    ErrorDocument 401 /errordocs/401.html

    ErrorDocument 403 /errordocs/403.html

    • Вместо ErrorDocument 404 /errordocs/404.html вы также можете сделать ErrorDocument 404 http://www.yourdomain.com/errordocs/404.html или даже просто показать простое сообщение ErrorDocument 404 "Sorry can't allow you access today"

    • Если у вас возникнут проблемы, руководство Apache (директива ErrorDocument) должно помочь вам в дальнейшем.

В вашем случае убедитесь, что AllowOverride All , редактирование файла .htaccess в корневом каталоге и убедитесь, что вы ударили URL-адрес страницы с ошибкой, если в URL-адресу, указанном вами, Apache не вернет значение 404 по умолчанию.

В вашей конфигурации apache в разделе «Каталог» вашего веб-сайта убедитесь, что вам разрешено переопределить директиву FileInfo.

Что-то вроде

AllowOverride FileInfo

http://httpd.apache.org/docs/current/mod/core.html#errordocument

Попробуйте отключить строку из httpd.conf в конфигурации apache.

 #LoadModule rewrite_module modules/mod_rewrite.so 

раскоментирован:

 LoadModule rewrite_module modules/mod_rewrite.so 

Также перезапустите apache

Вы пробовали ErrorDocument 404 /main/404_not_found.html ?

Просто у вас есть что-то, мешающее вашему URL (не уверен, что это ваш полный htaccess)? Обычно я не помещаю весь URL, хотя технически вы можете.

Также вы можете получить доступ к странице 404 напрямую?

Попробуйте изменить строку с помощью ErrorDocument 404 http://www.google.com.

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

Я не думаю, что это ошибка .htaccess, потому что вы получите 500 Внутреннюю ошибку, если она есть.

Если эти трюки не работают, это означает, что вы перенаправляетесь внутри вашей конфигурации apache.