Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ErrorDocument 404 против RewriteRule
 
 автор: duhon   (29.10.2012 в 21:41)   письмо автору
 
 

есть .htaccess


RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php?query=$1 [NC,L]

ErrorDocument 404 /404.html

в корне сайта лежит нормальный 404.html (к нему можно получить доступ по www.site.loc/404.html)

если в урле набрать например www.site.loc/bla_bla то сработает ошибка 404 но страница будет пустой.

Пытался разобраться и пришел к возможно ошибочному мнению.
- ввожу в урл www.site.loc/bla_bla
- в .htaccess срабатывает правило public/index.php?query=$1
- грубо говоря в public/index.php попытка найти модуль отображение
- ничего не находит и генерит header(404)
- в браузер выводит пустую страницу со статусом 404 (но я планировал что на этом этапе апачь поймает 404 и выведет 404.html)

И того вопрос
- Что я сделал не так.
- И как сделать нормально, что бы и роутер срабатывал и 404 ошибка отображалась.

З.Ы. Вариант заменить в php header(404) на вывод сразу текста с 404.html не подходит, так как это очень сильно противоречит корпоративному-фреймворку

  Ответить  
 
 автор: Sfinks   (29.10.2012 в 22:23)   письмо автору
 
   для: duhon   (29.10.2012 в 21:41)
 

А список форматов допустимых урлов сильно большой? Если нельзя редактировать пых, то нужно обобщенное
RewriteRule ^(.*)$ public/index.php?query=$1 [NC,L]
заменить на набор более узких правил, типа
RewriteRule ^((docs|news|admin).*)$ public/index.php?query=$1 [NC,L]
наверняка все возможные допустимые урл можно подогнать под несколько шаблонов.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования