У меня ниже .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;
Убедитесь, что вы включили функцию mod rewrite (вы можете сделать это, разместив строку ниже в файле httpd.conf
(обычно в каталоге /conf/
Это может быть и другое, если вы используете общий хостинг и удаляете полуколону с начала линия)
;LoadModule rewrite_module modules/mod_rewrite.so
Найдите соответствующий тег каталога для вашего корня www и измените AllowOverride None
на AllowOverride All
Создайте файл .htaccess в корневом каталоге (если его не существует)
Вам нужно будет вставить что-то похожее на это ;
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.