|
|
|
| Добрый день!
Есть проблема, которую я не могу своими силами решить, даже почитав доку по командам. Видимо регулярные выражения это не для меня :-(
Так вот, в корневой папке в файле .HTACCESS на основании различных примеров я прописал следующее (см.ниже блок). Вроде бы все работает хорошо, но я не могу организовать переход на несуществующую страницу т.к. команда
RewriteRule (.+) /_runsite_test.php?do=$1 [L]
| все перехватывает на себя и внутри обработчика _runsite_test.php перебрасывает посетителя (при ненахождении страницы) на главную страницу сайта. Выходит, что на сайте на каждую несуществующую страницу производится переход на главную страницу. В яндексе уже 1000 чтраниц проиндексировалось, а их всего 90. Как можно сделать условие, чтобы команда
RewriteRule (.+) /_runsite_test.php?do=$1 [L]
| пропускалась при заходе к примеру на несуществующую страницу с именем ttt.php ?
---- содержимое файла .htaccess -------
AddDefaultCharset windows-1251
AddHandler application/x-httpd-php .phtml
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
Options -Indexes
DirectoryIndex _runsite_test.php /admin/index.php
RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.+) /_runsite_test.php?do=$1 [L]
|
| |
|
|
|
|
|
|
|
для: Alex Boxgorn
(17.04.2013 в 12:24)
| | При таких правилах скрипт _runsite_test.php у вас работает как роутер (как правило его так и называют - router.php).
Соответственно он и отвечает за разбор содержимого и в нем же вам необходимо регулировать поведение. Например так:
<?php
switch( $_GET['do'] )
{
case 'index.php':
// делаем что-то, что относится к выводу содержимого сайта
break;
case 'register.php':
// делаем что-то, что относится к регистрации
break;
case 'auth.php':
// делаем что-то, что относится к авторизации
break;
default:
// выводим страницу 404
header('HTTP/1.1 404 Not Found');
exit( 'Страница не найдена' );
}
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(17.04.2013 в 14:55)
| | Спасибо все заработало!! Я разобрался и сделал как вы рекомендовали.
Но как теперь вывести свою страницу при ошибке 404, чтобы посетитель ее увидел и смог вернуться на сайт? | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(17.04.2013 в 20:18)
| | >Но как теперь вывести свою страницу при ошибке 404, чтобы посетитель ее увидел и смог вернуться на сайт?
<?php
...................
default:
// выводим страницу 404
header('HTTP/1.1 404 Not Found');
// ну вот собственно тут вы можете делать что хотите
// работать с базой, сохранять статистику, формировать и выводить
// любой html-код.
exit;
...................
?>
| Или я не правильно вопрос понял? | |
|
|
|