Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 15
1

.htacess нереврайтит на 404 страницу

20.12.2016, 21:27. Показов 1382. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Решил оптимизировать сайт и начал с человеческой переадресацией на 404 страницу, но вот уже неделю ломаю блин голову - условия следующие:
Bash
1
2
3
4
5
6
7
8
9
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L,QSA]
Options -Indexes
ErrorDocument 401 /errors/errors.php
ErrorDocument 402 /errors/errors.php
ErrorDocument 403 /errors/errors.php
ErrorDocument 404 [url]http://site.ru/404.php[/url]
и тд.
С какого то перепугу, сервак отдает Not Found 404, а не шлет на 404.php
Удаляю условия:
Bash
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php [L,QSA]
И теперь каждая ссылка на главной странице автоматом перебрасывает на 404.php

Что я только не переделал, но ничего явно не дает правильной переадресации с несуществующего url на 404.php

Помогите!!!

Добавлено через 22 часа 32 минуты
Все также - решения не нашел. Нужна помощь!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2016, 21:27
Ответы с готовыми решениями:

Не получается задать страницу 404
Добрый день. Столнуклся со следующей проблемой. Хотел задать на сайте страницу ошибки 404. Создал...

Как изменить страницу 404 в appserv?
вот ету на другую

404 при том что сервер корректно отдает страницу (nginx+apache)
Столкнулся с такой проблематикой: На веб-сервере работает несколько сайтов и один из них,...

Wordpress - если в “wp-content” нет такого файла, то отдать за место 404 код ответа 403. В htacess может как?
Доброго времени суток, уважаемые гуру. На сайте Wordpress имеется папка "wp-content", там лежат...

3
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
22.12.2016, 00:40 2
Ты не понял как работает протокол http. Не должно быть никакого редиректа на 404.php.
Псевдокод без лишних деталей:
Цитата Сообщение от Rtutis Посмотреть сообщение
Код
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,QSA]
Вот это оставляешь для обработки запросов на index.php
PHP
1
2
3
4
5
if ( page_not_found($_SERVER['REQUEST_URI']) ) { // если по данному запросу ничего нет
    header("HTTP/1.1 404 Not Found"); // устанавливаем код ответа 404
    include '404.php'; // выводим тело ответа
    exit(); // прекращаем обработку запроса
}
0
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 15
04.01.2017, 19:47  [ТС] 3
Спасибо за ответ - попробовал как Вы посоветовали, но когда код ставлю в index.php: если в начало кода - сайт кладет в оффлайн с ошибкой на синтаксис в этом коде, если ставлю в конце то ничего и не происходит - перенаправления на страницу 404.php так и не происходит. Закопипастил сюда содержимое index.php, может и правда не туда ставлю, посмотрите если не сложно.
Код
<?

/* 

#############################################################################################################################################################################
#																																											#
#		Архитектура загрузки модулей:                                                                                                                           			#
#		                                                                                                                                                        			#
#		Папка с модулями - "/mod"                                                                                                                               			#
#		все находящиеся в ней папки являются отдельными модулями ( имя папки = имя модуля )                                                                     			#
#		                                                                                                                                                        			#
#		                                                                                                                                                        			#
#		Содержание папки с модулем:                                                                                                                             			#
#		Папка с модулем содержит в себе 2 основные папки: "front" и "back".                                                                                     			#
#			"front" - папка с данными модуля, которые загружаются во фронтоффисе                                                                                			#
#			"back" - папка с данными модуля, которые загружаются в админке                                                                                      			#
		                                                                                                                                                    			#
#		Структура папки "front":                                                                                                                                			#
#				папка css			-	файлы стилей (расширение css, имя - любое) - все соответствующее содержимое будет подключено к проекту                  			#
#				папка js			-	файлы скриптов (расширение js, имя - любое) - все соответствующее содержимое будет подключено к проекту                 			#
#				папка tpl			-	если файл ИМЯ_МОДУЛЯ.php не найден, то класс будет пытаться найти его в этой папке.                                     			#
#				файл ИМЯ_МОДУЛЯ.php	-	стартовый файл модуля. Именно его подключат при загрузке модуля                                                         			#
#				                                                                                                                                                			#
#				                                                                                                                                                			#
#		Структура папки "back":                                                                                                                                 			#
#				папка css			-	файлы стилей (расширение css, имя - любое) - все соответствующее содержимое будет подключено в админке                  			#
#				папка js			-	файлы скриптов (расширение js, имя - любое) - все соответствующее содержимое будет подключено в админке                 			#
#				папка manual		-	(содержит файл ИМЯ_МОДУЛЯ.php, который будет подключен при открытии формы с инструкцией по данному модулю      						#
#										( в файле обязательно должна быть переменная $Myname = 'Русское имя модуля' )                 										#
#				папка settings		-	(содержит файл ИМЯ_МОДУЛЯ.php, который будет подключен при открытии спойлера с настройками модуля на вкладке контента страницы.     #
#										( в файле обязательно должна быть переменная $Myname = 'Русское имя модуля' )   													#						
#			                                                                                                                                                    			#
#				                                                                                                                                                			#
#		Все модули, которые должны грузиться на конкретной странице попадают в массив "mod" класса template  ( $tpl->mod )                                      			#
#		Этот массив содержит в себе индексы, имена которых являются id модулей(.                                                           									#
#		Каждому такому индексу моответствует массив, в котором данные располагаются след. образом:                                                              			#
#					                                                                                                                                            			#
#				['region'] = регион использование модуля                                                                                                        			#
#				['content'] = сам модуль                                                                                                                        			#
#				['name'] = имя модуля                                                                                                                       				#
#		                                                                                                                   						                                                                                                                                                            			#
#############################################################################################################################################################################
 */


/* 
#############################################################################################################################################################################
#                                                                                                                                                                           #
#	архитектура загрузки и работы плагинов                                                                                                                                  #
#                                                                                                                                                    						#
#                                                                                                                                                    						#
#	РАЗНИЦА МЕЖДУ МОДУЛЯМИ И ПЛАГИНАМИ ТОЛЬКО ТА, ЧТО МОДУЛИ МОЖНО ПОДРУБАТЬ К ЛЮБОЙ СТРАНИЦЕ И ЛЮБОЕ ЧИСЛО РАЗ. ПЛАГИНЫ САМИ РЕШАЮТ,                						#
#	КОГДА ИМ ЗАГРУЗИТЬСЯ И НА КАКОЙ СТРАНИЦЕ. ДВИЖОК ПОДКЛЮЧИТ И ЗАПУСТИТ ВСЕ ПЛАГИНЫ, КОТОРЫЕ ЕСТЬ В ПРОЕКТЕ НА КАЖДОЙ СТРАНИЦЕ.                    						#
#	НАСТРОЙКИ ПЛАГИНА ДЕЙСТВУЮТ НА ВСЕ СТРАНИЦЫ, ТОГДА КАК МОДУЛЬ НАСТРАИВАЕТСЯ НА КОНКРЕТНУЮ СТРАНИЦУ.                                              						#
#	                                                                                                                                                 						#
#	                                                                                                                                                 						#
#	плагины валяются в папке plugins                                                                                                                 						#
#	структура дерева папок аналогична с модулями:                                                                                                    						#
#	                                                                                                                                                 						#
#                                                                                                                                                    						#
#		Папка с плагином содержит в себе 2 основные папки: "front" и "back".                                                                          						#
#			"front" - папка с данными плагина, которые загружаются во фронтенде                                                                      						#
#			"back" - папка с данными плагина, которые загружаются в админке                                                                          						#
#                                                                                                                                                    						#
#                                                                                                                                                    						#
#		Структура папки "front":                                                                                                                     						#
#				папка css			-	файлы стилей (расширение css, имя - любое) - все соответствующее содержимое будет подключено к проекту       						#
#				папка js			-	файлы скриптов (расширение js, имя - любое) - все соответствующее содержимое будет подключено к проекту      						#
#				папка tpl			-	если файл ИМЯ_ПЛАГИНА.php не найден, то класс будет пытаться найти его в этой папке.                         						#
#				файл ИМЯ_ПЛАГИНА.php	-	стартовый файл плагина. Именно его подключат при загрузке плагина                                        						#
#                                                                                                                                                    						#
#                                                                                                                                                    						#
#		Структура папки "back":                                                                                                                      						#
#				папка css			-	файлы стилей (расширение css, имя - любое) - все соответствующее содержимое будет подключено в админке       						#
#				папка js			-	файлы скриптов (расширение js, имя - любое) - все соответствующее содержимое будет подключено в админке      						#
#				папка manual		-	(содержит файл ИМЯ_ПЛАГИНА.php, который будет подключен при открытии формы с инструкцией по данному плагину  						#
#										( в файле обязательно должна быть переменная $Myname = 'Русское имя плагина' )                 				 						#
#				папка settings		-	(содержит файл ИМЯ_ПЛАГИНА.php, который будет подключен при открытии формы с настройками плагина.            						#
#										( в файле обязательно должна быть переменная $Myname = 'Русское имя плагина' )   							 						#				
#			                                                                                                                                         						#
#																																					 						#
#																																											#				
#############################################################################################################################################################################																																										#				
 
 */                                                                                                                                                 						
 
 
 


/* 
	#############################################################################################################################
	#																															#
	#	при необходимости можно очистить буффер шаблона ( аналогичные методы есть для css, js, meta )							#
	#	и подгрузить другой шаблон																								#
	#																															#
	#	$tpl->clearBufferTpl();																									#
	#																															#
	#	$tpl->loadTpl('anytpl');																								#
	#																															#
	#############################################################################################################################
	
*/




/* 	
	#############################################################################################################################
	#																															#
	#	замена псевдокода.																										#
	#																															#
	#	ДЛЯ МОДУЛЕЙ:	В свойстве "mod" объекта класса "template" содержится многомерный ассоциированный массив				#
	#					(   [ имя модуля ] => array( region, content )           )												#
	#					Заменяется соответственно псевдокод "{region-ИМЯ РЕГИОНА}" на контент модуля, который располагается в этом 	#
	#					регионе, при этом имя региона возвращается обратно для последующих модулей								#
	#																															#
	#	ДЛЯ СТРАНИЦЫ:	Заменяется псевдокод на соответствующие иму величины.													#
	#					%{meta_title}%			-	тег "TILE"																	#
	#					%{meta_description}%	-	тег "DESCRIPTION"															#
	#					%{meta_keywords}%	 	-	тег "KEYWORDS"																#
	#					%{meta_lang}%			-	тег "LANGUAGE"																#
	#					%{title}%				-	заголовок страницы, определяемый тегом H1 перед основным контентом			#
	#					%{content}%				-	контент страницы	                                                        #
	#					%{regionЧИСЛО}%			-	заменится на содержание модуля, который грузится в регионе regionЧИСЛО		#
	#																															#
	#############################################################################################################################

*/

	
function __autoload($className)
{
	$fname = $_SERVER['DOCUMENT_ROOT'].'/lib/classes/class.'.$className.'.php';
	
	if(file_exists($fname)) include_once($fname);
}



$config = new config();




$db = new MySql();



$compile = new compile();



$page = new page();	

$mmenu = new mmenu();

$tpl = new template();	


$compile->compileAll();

$compile->render();




unset( $tpl );

unset( $mmenu );

unset( $page );

unset( $compile );

unset( $db );

if ( page_not_found($_SERVER['REQUEST_URI']) ) { // если по данному запросу ничего нет
    header("HTTP/1.1 404 Not Found"); // устанавливаем код ответа 404
    include '404.php'; // выводим тело ответа
    exit(); // прекращаем обработку запроса
}

?>
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.01.2017, 00:35 4
Цитата Сообщение от Rtutis Посмотреть сообщение
но когда код ставлю в index.php
Я приводил не реальный рабочий код, а псевдокод, показывающий принцип работы, так что естественно что ничего не работает, фунции page_not_found в php нет. Реальный код будет сильно зависеть от проекта.
0
05.01.2017, 00:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2017, 00:35
Помогаю со студенческими работами здесь

Перенаправление на страницу с ошибкой 404
Всем здравствуйте, подскажите пожалуйста решение. У меня категории товаров открываются с помощью...

Оцените мою 404 страницу :)
Ошибка 404 страница не найдена

Не удается настроить 404 страницу
Пользователь перешел не посуществующему адресу Ему в ответ if($_SERVER &amp;&amp; $data){...

Как сделать страницу 404?
Всем привет! Подскажите, как сделать так, чтобы если при переходе на не существующую страницу сайта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru