gv0zd
Новичок
Есть рабочий сайт с рабочим ЧПУ
Т.е. если скрипт не находит никакого соответствия, просто отправляем на главную страницу.
Решил я, что это неправильно. Лучше выдавать в таком случае 404 заголовок. Сделать специальную страницу для 404 ошибки. И на эту страницу перенаправлять через .htaccess
Что получается в данном случае:
Если я запрашиваю http://site.com/aaa.bbb, сервер выдает 404 ошибку и меня успешно перенаправляет на http://site.com/error
Если же я запрашиваю http://site.com/aaa/bbb, php скрипт отрабатывает как нужно
т.е. заходит сюда
Но 404 ответа от сервера я не получаю.
Если делаю так
Вижу надпись Ошибка.
Если переписываю RewriteCond
Т.е. разрешаю, чтоб в ЧПУ были точки, то уже и http://site.com/aaa.bbb не пересылается на страницу http://site.com/error.
Т.е. я так понимаю, траблы в .htaccess
Подскажите, Как сделать. чтоб и ЧПУ работали и 404 еррор кошерно обрабатывался.
Заранее спасибо
PHP:
//Содержание .htaccess
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^([^.]*)$ /index.php?rewrite_path=$1 [QSA] //В ЧПУ могут быть любые символы кроме точек
PHP:
//Содержание index.php
//Проверка входящего ЧПУ
...
...
if ($page) {
//Выдаем запрошенный контент
}
else {
header ('Location: /');
exit;
}
Решил я, что это неправильно. Лучше выдавать в таком случае 404 заголовок. Сделать специальную страницу для 404 ошибки. И на эту страницу перенаправлять через .htaccess
PHP:
//Содержание .htaccess
ErrorDocument 404 /error
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^([^.]*)$ /index.php?rewrite_path=$1 [QSA] //В ЧПУ могут быть любые символы кроме точек
PHP:
//Содержание index.php
//Проверка входящего ЧПУ
...
...
if ($page) {
///Что-то делаем
}
else {
header('Status: 404 Not Found');
exit;
}
Если я запрашиваю http://site.com/aaa.bbb, сервер выдает 404 ошибку и меня успешно перенаправляет на http://site.com/error
Если же я запрашиваю http://site.com/aaa/bbb, php скрипт отрабатывает как нужно
т.е. заходит сюда
PHP:
else {
header('Status: 404 Not Found');
exit;
}
Если делаю так
PHP:
else {
//header('Status: 404 Not Found');
echo 'Ошибка';
exit;
}
Если переписываю RewriteCond
PHP:
//Содержание .htaccess
ErrorDocument 404 /error
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index.php
RewriteRule ^(.*)$ /index.php?rewrite_path=$1 [QSA] //В ЧПУ могут быть точки
PHP:
//Содержание index.php
//Проверка входящего ЧПУ
...
...
if ($page) {
///Что-то делаем
}
else {
header('Status: 404 Not Found');
exit;
}
Т.е. я так понимаю, траблы в .htaccess
Подскажите, Как сделать. чтоб и ЧПУ работали и 404 еррор кошерно обрабатывался.
Заранее спасибо