1

Тема: Не выдает страницу 404. Проблема

Ввожу адрес
http://site.ru/tra-la-la или http://site.ru/404
Выбивает страница 404 (так и должно быть)

Но когда ввожу страницу которой нету или которую удалил из сайта
http://site.ru/?page=Statti_nasha-istoriya_TRA-la-la
http://site.ru/?page=TRA-la-la
То выбивает Главная.

В чем проблема? Как решить проблему ?

2

Re: Не выдает страницу 404. Проблема

Строка после знака вопроса - это параметры для главной страницы. Главная страница у вас существует - поэтому она и выводится. Здесь нет ошибки. Если хотите выдавать 404 страницу при некорректных GET параметрах, то в скрипте сделайте их проверку.

3

Re: Не выдает страницу 404. Проблема

Кто знает, поможет поможет сделать mod_rewrite
с http://site/?page=Statti_nasha-istoriya   
на
http://site/Statti_nasha-istoriya

Может кто-то знает как это реализовать.

4

Re: Не выдает страницу 404. Проблема

Это правило передаст ссылку http://site/Statti_nasha-istoriya на http://site/index.php?page=Statti_nasha-istoriya

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)$ /index.php?page=$1 [L,NC]

5

Re: Не выдает страницу 404. Проблема

Каждое правило по отдельности выполняется без проблем.

А как сделать, чтобы они оба работали одновременно?

RewriteRule ^([A-Za-z0-9-]+)/?$ /index.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9-]+)/?$ /index.php?catalog=$1 [L]

6

Re: Не выдает страницу 404. Проблема

saleval сказал:

Каждое правило по отдельности выполняется без проблем.
А как сделать, чтобы они оба работали одновременно?

Надо передавать в урл префикс определяющий на какой скрипт его передавать. Например:

http://site/page/Statti_nasha-istoriya
RewriteRule ^page/([A-Za-z0-9-]+)/?$ /index.php?page=$1 [L]
http://site/catalog/Statti_nasha-istoriya
RewriteRule ^catalog/([A-Za-z0-9-]+)/?$ /index.php?catalog=$1 [L]