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 :: Про ЧПУ и не только.. [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Малюсенькая статейка.
sKaa
Отправлено: 14 Ноября, 2011 - 23:45:38
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Тогда зачем ты что-то правишь? Убери эти строки в .htaccess и у тебя по дефолту без правки .htaccess запрос site.ru/reg.php и так адресуется на reg.php я не понимаю что ты хочешь тогда...
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 05:55:48
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




sKaaты написал, что при том запросе (site.ru/reg/) будет в итоге переадресовка на site.ru/index.php?reg. Но мне то надо, чтобы была переадресовка на site.ru/reg.php.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 06:01:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Estenny Жостко. А потом вам нужна будет переадресовка на news.php, articles.php, catalog.php, profile.php, newmessage.php, mail.php... Перечитайте уж концепцию чтоли...
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 16:12:56
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Ладно, я попытаюсь заново объяснить мою проблему.
Расположение файлов: в папке 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. Вот то, что мне нужно.
 
 Top
sKaa
Отправлено: 15 Ноября, 2011 - 16:48:11
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Попытайся ещё раз прочитать концепцию прежде чем пытаться объяснить, что ты хочешь.
Ты можешь понять что под ЧПУ тебе нужна совсем другая организация обработки 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 в зависимости от того что указано в запросе..
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 16:58:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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.

Хватит уже говнокодить. Накой хрен вам сдались куча файлов в корне?
Шаблоны для вывода вообще в другую папку запихните, оттуда и подключайте.
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 17:20:34
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




О, теперь я понял концепцию! Буду сейчас все объединять!
Т.е. я просто создаю каталог modules, в котором и будут лежать шаблоны вывода информации, например, тот же самый single.php, но от-туда вызывать мне нужно лишь часть кода, которая будет мне что-то выводить, т.е. мне нужно лишь шаблон вывода вписать в этот файл single.php. Я правильно понял?
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 17:30:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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:
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 17:43:43
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




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, но только уже Денверовская!
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 17:44:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Так в любом месте кода можно переопределить шаблон.
А вдруг не будет (см. массив) раздела 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";
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 18:06:47
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Ура! Переадресовка с главной получилась! Буду работать дальше, подключать переезд.
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 18:15:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Estenny пишет:
подключать переезд
Отмечать Радость
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 18:17:07
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




DeepVarvar, ахах Улыбка .
Что-то мне кажется, что у меня проблемы с .htaccess...
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Ноября, 2011 - 18:20:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Да у меня его и нет совсем собственно хтацесса этого, я на nginx'e как-то больше...
Апач остановлен, спит на диске с год уже...
Так что уже подзабыл все эти апачкины реврайты..
 
 Top
Estenny
Отправлено: 15 Ноября, 2011 - 18:23:13
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




DeepVarvar, сколько тут надо постов набрать, чтобы репутацию редактировать? Вы мне тут все помогаете, а я вас и отблагодарить не могу!
 
 Top
Страниц (9): « 1 2 [3] 4 5 6 7 8 9 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB