Знатоки mod_rewrite помогите пожалуйста

Unlock
На сайте с 01.08.2004
Offline
786
1028

В .htaccess записано следующее:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* index.php [QSA,L]

Проблема в том, что даже если файл отсутствует, то код ответа сервера 200, а не 404.

Я нашел только такое решение проблемы:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^page1(.*) index.php

RewriteRule ^page2(.*) index.php

RewriteRule ^page2(.*) index.php

RewriteRule ^delete_page.php 404.php

Где по сути page1, page2 и page3 это реально существующие страницы, а delet_page.php это страница которая была удалена. Но при таком раскладе надо прописывать все страницы которые есть на сайте... А это крайне муторно, да и не практично. Подскажите, какое-нибудь нормально решение проблемы.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
Shema
На сайте с 01.12.2005
Offline
176
#1

А вариант без mod_rewrite вам не интересен?

В .htaccess пишем:

ErrorDocument 404 /index.php?page=404

в index.php обрабатываем page=404, выдавая текст ошибки. Отклик сервера при этом будет 404. Само собой заворачивать можно на любой url.

Студия Design Coda (http://www.designcoda.ru/). Личные контакты: +7(903)1367564, skype:andrey.oshemkov, telegram:@oshemkov. WMID: 492025973671 (https://passport.webmoney.ru/asp/certview4.asp?wmid=492025973671), делаем и рекламируем сайты, мобильные приложения, ботов для Telegram.
Unlock
На сайте с 01.08.2004
Offline
786
#2

Shema, что-то не работает такой вариант...

Shema
На сайте с 01.12.2005
Offline
176
#3

А что происходит?

Редирект происходит на /index.php?page=404 ?

Если да, но отклик сервера не 404, то можно в index.php добавить первой строку


<? if($_GET['page'] == '404') header ("HTTP/1.0 404 Not Found"); ?>
Unlock
На сайте с 01.08.2004
Offline
786
#4

Shema,

в том то и дело, что редирект происходит просто на index.php Эх... Тут проблемы еще в том, что движок чужой, а сам я в php и mod_rewrite не разбираюсь практически :(

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий