Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Про ЧПУ и не только.. [8]
Покинул форум
Сообщений всего: 82
Дата рег-ции: Февр. 2012
Помог: 0 раз(а)
[+]
В ответ на это http://example[dot]ru/registration
Выводит этот масив array(1) { [0]=> bool(false) }
что не так?Отредактировано модератором: Мелкий, 15 Июля, 2013 - 09:47:31
DeepVarvar
Отправлено: 16 Июля, 2013 - 08:55:06
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Много чего может быть не так. Уточни что не так у тебя.
Смотри логи сервера.
Дебаж свой скрипт.
Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2013
Помог: 0 раз(а)
DeepVarvar пишет:
Раз уж решил отписаться - отпишусь.
Как и обещал - простыми словами.
В связи с тем что на форуме участились вопросы по теме ЧПУ, раскрою немного эту тему.
Начнем с того, что же это такое, но с небольшим отступлением.
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.
Ну вот на самом деле даже наверное все..
Сильно не бейте - я вообще впервые взял в руки "виртуальное перо".
А вдруг получится написать нормально?
А можно как - то без массива? Ну, например, мне нужно считать просто УРЛ http://site[dot]ru/mail
а как быть если я перехожу на site.com/catalog/perviy/page1
как тогда делать ?
ninzzo
Отправлено: 17 Октября, 2013 - 14:07:53
Частый гость
Покинул форум
Сообщений всего: 176
Дата рег-ции: Март 2013
Помог: 0 раз(а)
кстате если реализовать URL указаным автором способом то он втупую не видит $_GET
Вот попробуйте. Мне кажется этот способ устаревшим. Слишком много непоняток. Из на wordpress и на joomla 100% урлы сделаны по другому.
esterio
Отправлено: 17 Октября, 2013 - 14:13:01
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
ninzzo пишет:
Слишком много непоняток. Из на wordpress и на joomla 100% урлы сделаны по другому.
Не самый удачный пример
Squirrel
Отправлено: 20 Октября, 2013 - 12:30:05
Забанен
Покинул форум
Сообщений всего: 147
Дата рег-ции: Авг. 2013
Помог: 4 раз(а)
[+]
ninzzo пишет:
кстате если реализовать URL указаным автором способом то он втупую не видит $_GET
Аффтор тупо "отреврайтил" чей-то "отреврайченный" текст. В процессе "реврайтов" кто-то потерял флаг QSA и знак доллара в 5й строке. В прочем как и сам смысл такого "ЧПУ".
ninzzo пишет:
Мне кажется этот способ устаревшим. Слишком много непоняток.
Он не устаревший. Он изначально крив и не нужен. И зря ты камень кинул в этот огород. На этом форуме такая ЧПУ считается гуру единственно правильной. А остальными тупо копируется, без понимания смысла.
ninzzo
Отправлено: 24 Октября, 2013 - 20:45:36
Частый гость
Покинул форум
Сообщений всего: 176
Дата рег-ции: Март 2013
Помог: 0 раз(а)
Цитата:
Цитата:
кстате если реализовать URL указаным автором способом то он втупую не видит $_GET
Аффтор тупо "отреврайтил" чей-то "отреврайченный" текст. В процессе "реврайтов" кто-то потерял флаг QSA и знак доллара в 5й строке. В прочем как и сам смысл такого "ЧПУ".
ребят но как быть с $_GET ???
ведь если я захожу на сайт site.com/1?kod=123 то данным способом мой kod=123 не видно через GET. $_GET вообще не существует. В htaccess его затирает.
как быть? Что ни кто не сталкивался ? помогите=(
разобрался. нужно в htaccess сделать так - "RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]"
Покинул форум
Сообщений всего: 147
Дата рег-ции: Авг. 2013
Помог: 4 раз(а)
[+]
ninzzo пишет:
спасибо Squirrel
Да не за что. Только советую внимательно почитать статьи по RewriteRule.
А так, чисто намек. Только при условии, что ты используешь два типа ссылок (что в принципе не правильно), то есть на одну и туже страницу ведут ссылки "/aaa" и "/index.php?q=aaa", и необходим _GET, вот тогда, и только тогда нужно делать, как ты написал.
Если хоть одно из условий не требуется, то без [QSA] можно в легкую обойтись.
vsbn
Отправлено: 14 Марта, 2015 - 01:01:57
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
Добрый день!
Прочитал вашу статью о "Про ЧПУ и не только..". До этого просмотрел в Сети несколько десятков страниц различных сайтов по этой теме. Но на большинстве из них контент скопирован из таких же страниц. Из содержания страниц не трудно понять, что авторы такого контента имеют слабое представление по этой теме, а те, кто имеет некоторое представление, не могут изложить так, чтобы хоть что-то было понятно другим.
В вашей же статье материал о ЧПУ изложен так, что он интересен, доступен для понимания. Очевидно, что вы программист высокого уровня, к тому же обладающий хорошими методическими способностями.
Весь материал, предложенный вами, я проверил на работоспособность. Как бывает в редких случаях, все работает на 100%.
На моем сайте скрипт в файле index.php был написан для использования адресов вида:
http://domain[dot]ru/?pg=page
После того, как создал по вашему примеру файл .htaccess, а в файле index.php применил строки из приведенного вами скрипта, стало возможным использовать адреса вида:
http://domain[dot]ru/page/
Во избежании недовольства поисковых роботов, в файле index.php оставил и прежние строки скрипта, сформировав условие, позволяющее альтернативно использовать и адреса прежнего вида:
http://domain[dot]ru/?pg=page
В карте сайта изменил старые ссылки на новые. Прошло недели две после загрузки на сервер обновленных файлов. Вчера проверил индексацию страниц. Google изменил старые ссылки страниц моего сайта на новые. Позиции страниц в поисковике даже повысилась.
Единственное, что привело к затрате времени после перехода на предложенную вами технологию, это пришлось в страницы сайта, на которых имеются рисунки, внести изменения, к примеру:
src="images/link.gif" изменить на src="/images/link.gif"
то есть, перед именем папки images добавить слеш, иначе рисунки не отображаются.
А также в теге файла header.php:
link rel="stylesheet" type="text/css" href="style.css"
изменить style.css на /style.css, то есть добавить слеш. Иначе style.css страницами не используется.
Интересно бы узнать, должно ли это так и быть, или я сделал что-то не так.
Большое вам спасибо.
DeepVarvar
Отправлено: 14 Марта, 2015 - 07:39:53
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Покинул форум
Сообщений всего: 25
Дата рег-ции: Нояб. 2013
Помог: 0 раз(а)
DeepVarvar пишет:
Да, все корректно.
И вот последнее, о чем забыл упомянуть в предыдущем сообщении.
Интересно было бы узнать, должно ли так и быть, что если в корневом каталоге имеется папка, например: "admin", имя которой совпадает с именем файла страницы, размещенном также в корневом каталоге, например: "admin.php", то при вводе в браузере адреса http://domain[dot]ru/admin/ открывается не страница "admin.php", а страница сервера Apache, отображающая дерево каталогов. Не допустимо, чтобы имя папки и файла совпадало? Или я сделал что-то не так, как нужно?
В [action].php из БД читаются данные строки с id=$parts[2], происходит магия, и все выводится.
В чем проблема:
Все файлы, которые включаются в php/head.php (css/*.css и js/*.js) почему-то ищутся в папке example.com/page/, КОТОРОЙ НЕТ! Почему-то require_once не выдает ошибок, а вот в консоли гуглхрома - 404:failed to load the source. И вместо вывода пустота.
Если адрес example.com/[page]/[action]/[id]/[subjectId]/[do], то файлы ищутся в папке example.com/[page]/[action]/[id]/
Все, что в квадратных скобках - скажем так, подстановочные значения.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.