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
Форумы портала PHP.SU :: Версия для печати :: Про ЧПУ и не только.. [3]
Форумы портала PHP.SU » Разное » Обсуждение статей » Про ЧПУ и не только..

Страниц (9): « 1 2 [3] 4 5 6 7 8 9 »
 

31. sKaa - 14 Ноября, 2011 - 23:45:38 - перейти к сообщению
Тогда зачем ты что-то правишь? Убери эти строки в .htaccess и у тебя по дефолту без правки .htaccess запрос site.ru/reg.php и так адресуется на reg.php я не понимаю что ты хочешь тогда...
32. Estenny - 15 Ноября, 2011 - 05:55:48 - перейти к сообщению
sKaaты написал, что при том запросе (site.ru/reg/) будет в итоге переадресовка на site.ru/index.php?reg. Но мне то надо, чтобы была переадресовка на site.ru/reg.php.
33. DeepVarvar - 15 Ноября, 2011 - 06:01:13 - перейти к сообщению
Estenny Жостко. А потом вам нужна будет переадресовка на news.php, articles.php, catalog.php, profile.php, newmessage.php, mail.php... Перечитайте уж концепцию чтоли...
34. Estenny - 15 Ноября, 2011 - 16:12:56 - перейти к сообщению
Ладно, я попытаюсь заново объяснить мою проблему.
Расположение файлов: в папке escms.ru (соответственно это и домен) лежит папка www, в которой находятся все файлы.

Имеется файл index.php и он у меня как главная страница блога, на которой находятся новости первой страницы.
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start(); require_once 'core.php'; require_once 'functions.php'; require_once 'login_db.php'; ?><!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <title>Главная Блога Estenny</title>
  5.  
  6.                 <!-- Вызов Шапки Кода -->
  7.                 <?PHP
  8.                         require_once 'header.php';
  9.                 ?>
  10.                
  11.                 <!-- Основной Код -->
  12.                 <section>
  13.                        
  14.                         <!-- Вызов Левого Блока -->
  15.                         <aside>
  16.                                 <?PHP require_once 'blocks.php'; ?>
  17.                         </aside>
  18.                        
  19.                         <!-- Вызов Статей -->
  20.                         <content>
  21.                                 <?PHP
  22.                                         call_articles();
  23.                                 ?>
  24.                         </content>
  25.                        
  26.                         <?PHP
  27.                                 page_switches();
  28.                         ?>
  29.                         <div id="clear"></div>
  30.                        
  31.                 </section>
  32.                
  33.                 <!-- Вызов Подвала -->
  34.                 <?PHP
  35.                         require_once 'footer.php';
  36.                 ?>

На ней выводятся новости в кратком варианте и есть ссылки на них. Имеется страница single.php, которая является шаблоном для одиночных записей, на которые ссылка. Контент этой страницы генерируется с помощью получения ID из $_GET, т.е. ссылка с главной такого типа: http://escms.ru/single.php?id=1. А теперь то, что надо мне: мне надо, чтобы вместо ссылки типа http://escms.ru/single.php?id=1 на всем сайте были ссылки типа http://escms.ru/single/1. Вот то, что мне нужно.
35. sKaa - 15 Ноября, 2011 - 16:48:11 - перейти к сообщению
Попытайся ещё раз прочитать концепцию прежде чем пытаться объяснить, что ты хочешь.
Ты можешь понять что под ЧПУ тебе нужна совсем другая организация обработки GET запросов?
Попробую на пальцах :
У тебя был запрос : http://escms[dot]ru/single.php?id=1
Он обрабатывался файлом single.php в котором была строчка $id = $_GET['id'];
Теперь ты изменив таким образом свой .htaccess как ты указал выше, ПЕРЕНАПРАВЛЯЕШЬ ВСЕ запросы на файл index.php
Я частично понял, что ты хочешь сделать но для этого тебе нужно писать по новому правилу в .htaccess для каждого файла будь то index.php, single.php news.php или любой другой..
Вместо этого в начале статьи тебе предлагают сделать одну точку входа
Тоесть запрос :
http://escms.ru/single/1 будет обрабатываться сервером как index.php?single/1
что в этом плохого?
А в файле index.php уже разбивай строку запроса как тебе нужно и обрабатывай её, загружая single.php или news.php в зависимости от того что указано в запросе..
36. DeepVarvar - 15 Ноября, 2011 - 16:58:37 - перейти к сообщению
Estenny пишет:
Имеется страница single.php, которая является...
В общем у вас только шаблоны в которых выполняется пхп. Гы...
Самый первый пост этой ветки, напротив, описывает верное направление действий.
А именно единую точку входа, будь там хоть такой адрес: kuku/pipi/haha/mumu.
Файлов *.php по этим адресам не существует.
А существует в самом простейшем варианте контроллер который я и описывал.
Причем специально отбросил все эти __autoload, method_exists и прочую пургу, которую сложно понять с наката.
В замен этим пляскам я предложил простейший вариант - подключение модуля, по значению первого параметра (в текущем примере это: /modules/kuku.php).
PHP:
скопировать код в буфер обмена
  1. require_once file_exists("modules/".$params[0].".php")
  2.   ? "modules/".$params[0].".php" : "modules/404.php";

Если файла модуля нет, то выдаст 404.

Хватит уже говнокодить. Накой хрен вам сдались куча файлов в корне?
Шаблоны для вывода вообще в другую папку запихните, оттуда и подключайте.
37. Estenny - 15 Ноября, 2011 - 17:20:34 - перейти к сообщению
О, теперь я понял концепцию! Буду сейчас все объединять!
Т.е. я просто создаю каталог modules, в котором и будут лежать шаблоны вывода информации, например, тот же самый single.php, но от-туда вызывать мне нужно лишь часть кода, которая будет мне что-то выводить, т.е. мне нужно лишь шаблон вывода вписать в этот файл single.php. Я правильно понял?
38. DeepVarvar - 15 Ноября, 2011 - 17:30:50 - перейти к сообщению
1) Помоему название папки модулей (мамки подулей) говорит само за себя - никаких шаблонов, только логика.
Шаблоны положите в папку templates. Какая разница откуда их инклюдить?
В контроллере же ждите возвращаемый логикой модуля результат, на основе которого подключается нужный шаблон/подшаблон.
(Добавление)
Да ёпт....
index.php:
PHP:
скопировать код в буфер обмена
  1. $params = array("aaa","23","18");
  2. require_once file_exists("modules/".$params[0].".php")
  3. "modules/".$params[0].".php" : "modules/404.php";
  4. require_once $tpl;

aaa.php:
PHP:
скопировать код в буфер обмена
  1. $tpl = "templates/aaa.tpl.php";
39. Estenny - 15 Ноября, 2011 - 17:43:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start(); require_once 'core.php'; require_once 'functions.php'; require_once 'login_db.php';
  2.  
  3.  
  4.         $params = array();
  5.         $query_string = str_replace('q=', '', trim($_SERVER['QUERY_STRING']));
  6.         $query_string = urldecode($query_string);
  7.         $query_params = explode('/', $query_string);
  8.        
  9.         foreach ($query_params as $query_param) {
  10.                 if ($query_param != '') {
  11.                         $params[] = mysql_real_escape_string($query_param);
  12.                 };
  13.         };
  14.          
  15.         require_once file_exists('modules/' . $params[0] . '.php') ? 'modules/' . $params[0] . '.php' : 'modules/404.php';
  16. ?>


Поместил это в файл index.php, дальше, создал папку (в той же директории, где лежит index.php) с именем modules и положил туда файл 404.php.
И теперь, когда я перехожу просто на escms.ru (просто главная сайта), меня переносит на 404.php. Почему? Что такое? А по запросу escms.ru/articles мне вообще открывается страница ошибки 404, но только уже Денверовская!
40. DeepVarvar - 15 Ноября, 2011 - 17:44:57 - перейти к сообщению
Так в любом месте кода можно переопределить шаблон.
А вдруг не будет (см. массив) раздела 23 или пункта 18 в этом разделе?
aaa.php (extended logic):
PHP:
скопировать код в буфер обмена
  1. $tpl = "templates/aaa.tpl.php";
  2. $razdel = false;
  3. if (!$razdel) $tpl = "templates/404.tpl.php";

(Добавление)
Estenny пишет:
Почему? Что такое?
Дебажь его: die(var_dump($checkvariable));
(Добавление)
Потому, что строка пустая совсем и нужно ввести условие на показ главной страницы:
PHP:
скопировать код в буфер обмена
  1. if (count($params) == 0) $params[0] = "main";
41. Estenny - 15 Ноября, 2011 - 18:06:47 - перейти к сообщению
Ура! Переадресовка с главной получилась! Буду работать дальше, подключать переезд.
42. DeepVarvar - 15 Ноября, 2011 - 18:15:18 - перейти к сообщению
Estenny пишет:
подключать переезд
Отмечать Радость
43. Estenny - 15 Ноября, 2011 - 18:17:07 - перейти к сообщению
DeepVarvar, ахах Улыбка .
Что-то мне кажется, что у меня проблемы с .htaccess...
44. DeepVarvar - 15 Ноября, 2011 - 18:20:58 - перейти к сообщению
Да у меня его и нет совсем собственно хтацесса этого, я на nginx'e как-то больше...
Апач остановлен, спит на диске с год уже...
Так что уже подзабыл все эти апачкины реврайты..
45. Estenny - 15 Ноября, 2011 - 18:23:13 - перейти к сообщению
DeepVarvar, сколько тут надо постов набрать, чтобы репутацию редактировать? Вы мне тут все помогаете, а я вас и отблагодарить не могу!

 

Powered by ExBB FM 1.0 RC1