astraller ([info]astraller) wrote,

Свои 404 ошибки на хостингах где это запрещено.

Системные требования:
- Доступ к .htaccess.
- Наличие mod_rewrite.

Как это работает?
В .htaccess мы пишем следующий код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?trans=$1 [QSA]
т.е. все запросы за исключением запросов к уже существующим файлам перенаправляются на index.php. Таким образом если пользователь обратится к несуществующему файлу, он попадёт на фаил index.php.

Кроме того эта схема даёт возможность сразу использовать ЧПУ.
В начале работы парсим переменную trans:
if (isset($_GET['trans'])){
     $link=explode('/',$_GET['trans']);
}else{
     $link=0;
}
И уже на основе массива $link делаем остальную навигацию.

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your IP address will be recorded 

  • 4 comments

[info]andreas_th

June 7 2008, 11:40:25 UTC 3 years ago

Эээ... А можно второе по-русски? Я просто не очень искушён во всяких сокращениях и пр. (можно сказать только вчера самоучитель по PHP прочитал...)

[info]astraller

June 7 2008, 13:34:20 UTC 3 years ago

Речь идёт об ЧеловекоПонятных УРЛ(URL).
И речь идёт о том что-бы пользоваться не переменными окружения $_GET, для определения страницы которую запрашивает пользователь, а собственным массивом $link который создаётся по названной выше схеме :)

[info]andreas_th

June 7 2008, 18:41:34 UTC 3 years ago

Эээ... А откуда переменная trans ваще берётся?

[info]astraller

June 8 2008, 08:20:34 UTC 3 years ago

А нам её милостиво предоставляет этот код:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?trans=$1 [QSA]
И ложит в неё все что идёт после http://[адрес сайта]/
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…