Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Раз уж решил отписаться - отпишусь.
Как и обещал - простыми словами.
В связи с тем что на форуме участились вопросы по теме ЧПУ, раскрою немного эту тему.
Начнем с того, что же это такое, но с небольшим отступлением.
1. IPv4
Были времена, когда не было доменных имен.
И все сетевые ресурсы были доступны только по прямому обращению по уникальному IP-адресу.
Но ресурсов становилось все больше и больше.
Такое кол-во IP-адресов было трудно запомнить, неудобно хранить..
И люди придумали доменные имена.
Появились DNS-сервера, хранящие данные к какому IP-адресу относится доменное имя.
DNS-сервис можно сравнить с записной книжкой телефона.
Имя - номер..
Имя - номер..
Имя - номер..
Имя - номер..
Не зачем запоминать IP-адрес. Достаточно запомнить доменное имя.
Это ведь ЧЕЛОВЕЧНО
2. ЧПУ
Ссылки динамических сайтов изначально выглядели примерно так:
Но это был только первый шаг. Ведь вроде бы для пользователя все красиво и понятно.
А как же программист? Сидеть и раскапывать сотни строчек в файле .htaccess?
Ну уж нет! Увольте! Программисту тоже нужна свобода и удобстно!
3. Единая точка входа
Вот тут и начинается рассказ об удобстве для программиста.
Итак, мы хотим прозрачно и понятно для себя самих получать данные из строки запроса и легко их обрабатывать.
Так поехали. Расскажу только один принцип для примера. Самый простой и понятный.
Мы просто ВООБЩЕ ВСЕ что к нам приходит перенаправим в один единственный файл:
4. Заключение
Когда у вас есть массив параматров,
вы можете использовать его как параметры функций или методов классов.
Например для последнего запроса можно поступить так: http://site[dot]ru/registration/2/
Берем первый параметр $params[0] (там "registration")
И подключаем файл содержащий код для регистрации.
А сам файл может содержать все что вам надо исключительно для работы с регистрацией пользователей.
Кстати самый смысл в том, что он ведь может обработать и $params[1], скорее даже должен.
Ведь именно для него мы передаем второй параметр.
P.S.
Ну вот на самом деле даже наверное все..
Сильно не бейте - я вообще впервые взял в руки "виртуальное перо".
А вдруг получится написать нормально?
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
написано хорошо, но не раскрыт один достаточно важный аспект.
А нужны ли они на самом деле? http://site[dot]ru/articles/657/34/page/8/#comments - это человечно? я например не видя полной строки запроса не смогу догадаться что обозначают 657, 34 (с 8 еще куда не шло).
Вопрос скорей не в человечности, а в том, что в далекие времена поисковые роботы тяжело переваривали динамический контент, и как правило он имел достаточно низкий индекс. сейчас же ситуация во многом изменилась.
для примера - на этом форуме нет чпу, но темы с него иногда в течении нескольких часов попадают в топ к гуглу. а если бы робот запутался и глядя на ссылки решил, что это статика? вряд ли бы они так часто индексировались.
П.С. пользователю в конечном итоге все-равно что там в строке запроса, он ее не читает, и не вводит. он жмет по ссылкам, а все остальное его мало волнует.
----- Всё гениальное - просто
И ещё проще, если ты - индиго
biperch
Отправлено: 11 Августа, 2011 - 12:24:57
Частый посетитель
Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009 Откуда: Днепропетровск
Помог: 8 раз(а)
DeepVarvar пишет:
biperch пишет:
Друпалист
Радость
Та я его даже и не знаю, друпала этого....
DeepVarvar
Отправлено: 11 Августа, 2011 - 14:44:34
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
White пишет:
А нужны ли они на самом деле?
Какраз этот момент я преднамеренно скрыл.
Текст был написан для тех, кто не знает что такое ЧПУ и как его првильно и удобно для себя и проекта организовать, если есть такое желание.
Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010 Откуда: Челябинск
Помог: 1 раз(а)
DeepVarvar, скажите получается лучше сделать файл, который бы обрабатывал все запросы на сайт? Разве не лучше всё прописать в .htaccess? Вы уверены, что крупные компании типа вконтакте делают именно так?
А статья классно получилась. Всё понятно. Побольше бы таких.) (Добавление)
Да и ещё. Если файл существует к примеру reg.php, то сайт его откроет, холесь бы, чтобы он открыл /reg. Это надо в .htaccess что-то написать? Подскажите пожалуйста!
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
new01 пишет:
Если файл существует к примеру reg.php, то сайт его откроет, холесь бы, чтобы он открыл /reg
Нет!!!
Вы нарушаете пункт номер три: Единая точка входа
Структура файлов примерно такова (папка в квадратных скобках и в ней файлы через ---, последние два в корне сайта):
[modules]
--- reg.php
--- login.php
--- news.php
--- и т.д...
index.php
.htaccess
Хтацесс такой как я писал, в индексе так как я писал.
Если обратиться по адресу http://localhost/reg/
Вам заинклюдит автоматом файл reg.php лежащий в папке modules
То же касается и остальных файлов..
Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010 Откуда: Челябинск
Помог: 1 раз(а)
DeepVarvar пишет:
Нет!!!
Вы нарушаете пункт номер три: Единая точка входа
Структура файлов примерно такова (папка в квадратных скобках и в ней файлы через ---, последние два в корне сайта):
[modules]
--- reg.php
--- login.php
--- news.php
--- и т.д...
index.php
.htaccess
Хтацесс такой как я писал, в индексе так как я писал.
Если обратиться по адресу http://localhost/reg/
Вам заинклюдит автоматом файл reg.php лежащий в папке modules
То же касается и остальных файлов..
Прям непонятно почему нельзя сделать так
RewriteCond %{REQUEST_FILENAME} !-d #не папка
RewriteCond %{REQUEST_FILENAME} !-f #не файл
Этот код определяет это не папка и не файл. Если условия выполнится, то выполняется следующия строка. Почему нельзя сделать дальше два условия, если это файл или папка,то перенаправлнение на /reg? Непонятно... (Добавление)
Arni пишет:
В этом вся проблема, каждый махенький сайтик смотрит на большие компании забывая о своем ничтожном предназначении.
ЧПУ будет, и чем дальше тем больше. И не разработчики это будут решать, а заказчики которые слушают СЕОшников.
Не понял вас. Что вы имели в виду? Объясните пожалуйста.. (Добавление)
Ещё почему возникает такая проблема. Есть файл indnex.php.Ввожу site.ru/index/
css стили пропадают.. Опять непонятно
----- new01
DeepVarvar
Отправлено: 12 Августа, 2011 - 08:02:16
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
new01 пишет:
Почему нельзя сделать дальше два условия
Можно.. Хоть сто условий. На каждое действие для каждого файла.
А потом когда у вас появится в папке модулей еще один файл,
будете добавлять в .htaccess еще строчек..
А когда вы уберете ненужный - будете удалять лишние строчки..
Я же описал как сделать правильнее, когда не надо будет думать что у вас в .htaccess написано. Вам знакомо такие выражение как "расширяемость" и "модульность"?
new01 пишет:
И не разработчики это будут решать, а заказчики которые слушают СЕОшников
Да, есть такая тема. Сеошники кричат что лучше сайт с чпу.
Если им так надо (хочется) - возможность есть. Но мы же это для себя в первую очередь делаем. Им нужен чпу? Ну а мы себе сделаем единую точку входа. Нам же удобнее. (Добавление)
new01 пишет:
css стили пропадают
Пишите путь от корня - не пропадут.
И непонятно кстати почему вообще пропадают.
Вы не должны фактически переходить в папку с файлом reg,
вы должны оставаться в корне. Файл только инклюдится и начинает выполняться как часть index.php в корне.
Это удобно и к путям стилей и картинок - какой бы путь не был указан в браузере - мы всеравно в корне сайта, только с разными аргументами.
Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010 Откуда: Челябинск
Помог: 1 раз(а)
То что пропадают стили - это очень плохо. Путь от корня писать как-то мне не нравится... Надо подумать
Надо сделать так. При вводе reg.php посылать пользователя на страницу с ошибкой 404, где написано "Такой страницы не существует". Как можно это сделать?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.