Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический .htaccess 
:(
    Опции темы
neoks
Дата 8.11.2011, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Сделал движок, но без ЧПУ, все из за того что движок модульный а .htaccess один.
То есть у каждого модуля может быть свой ЧПУ а может и не быть.

Я искал в нете но не нашел, как в .htaccess дописать новый ЧПУ ? или убрать, вариант просто навсего переписывать файл .htaccess.
Но тут проблема, вдруг обладатель движка захочет внести изменения, тогда при установки модуля все перепишется на новый.

Вообшем нужно сделать как то так, типа include()  smile и циклом инклюдить, но не знаю, может есть другой вариант, вообшем нужна ваша помощь.
PM MAIL   Вверх
ksnk
Дата 8.11.2011, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



neoks, движек обычно ставится в каталог сайта. Один движек на один каталог. В этом-же каталоге находится и .htaccess. 
Так что на движек приходится ровно один htaccess. Я что-то не так понимаю?



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Vas
Дата 8.11.2011, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



А как модули то вызываются? Что мешает перед вызовом модуля парсить url и передавать необходимые параметры в модуль?


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Absinthe
Дата 8.11.2011, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



http://en.wikipedia.org/wiki/Front_Controller_pattern
Решает проблему.

А костыли для подпирания костылей до добра не доведут. Переделывать скорее всего придется, но чем раньше - тем меньше проблем.
PM MAIL   Вверх
neoks
Дата 8.11.2011, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Цитата(Vas @  8.11.2011,  12:27 Найти цитируемый пост)
Что мешает перед вызовом модуля парсить url и передавать необходимые параметры в модуль? 

О это уже интересно, вот тока не врубаюсь как это будет работать.
Модуль получает $_GET[]

То есть с home/45/news/189 нуно получить $_GET['home'] и $_GET['news'] 
 

Это сообщение отредактировал(а) neoks - 8.11.2011, 12:34
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Работай через единую точку входа, а там уже парси урл по любым правилам
PM MAIL   Вверх
neoks
Дата 8.11.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Гы, я только слышу единую точку входа, а что эта такое и как с ним работать  smile 
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



PM MAIL   Вверх
MoLeX
Дата 8.11.2011, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



.htaccess
Код

RewriteEngine On
RewriteCond $1 !^(index\.php|css|js)
RewriteRule ^(.*)$ /index.php/$1 [L]



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
neoks
Дата 8.11.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Мда, туговато мне с .htaccess, не чего так и не понял про единую точку входа, теперь новая проблема, не находит не CSS не JS ) как это исправить ?

Добавлено через 2 минуты и 34 секунды
Вот так загружается модуль, index.php?action=modul&do=short_story&id=2
Как написать чтоб был так в единую точку входа ? modul/short_story/2
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 14:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Цитата

не чего так и не понял про единую точку входа

"В современных web-приложениях принято использовать концепцию единой точки входа. Эта концепция сводится к тому, что все запросы к серверу приложения переадресовываются на один файл, который, исходя из параметров запроса, координирует дальнейшее поведение скрипта."

А в этом файл уже парсишь запрос. Если запрос такого вида "modul/short_story/2" можно через explode
PM MAIL   Вверх
neoks
Дата 8.11.2011, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Цитата($дмитрий @  8.11.2011,  14:14 Найти цитируемый пост)
что все запросы к серверу приложения переадресовываются на один файл

То есть например в index.php если да то так у меня и работает, но трабла в том что .htaccess один, вдруг я новый модуль загружу и вот как теперь объяснить .htaccessУ что появился новый модуль с новым ЧПУ  smile 

Вариант переписывать .htaccess но как я говорил этот вариант не подходит  smile 

Вариант парсить урл, ну не знаю, нуно подумать, а вообще это будет правильно ?, пока обдумываю.
PM MAIL   Вверх
$дмитрий
Дата 8.11.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



.htaccess оставь в покое, всю работу мы переложили на index.php

А в index.php уже сам обрабатываешь запросы по любым правилам
Если для всех модулей одного правила будет достаточно action=МОДУЛЬ&do=ДЕЙСТВИЕ&id=ИДЕНТИФИКАТОР, то проблем вообще никаких
Если какие-то модули должны работать по другим правилам, тогда для этого модуля создаешь отдельное правило, и в цикле проверяешь совпадение

Цитата

Вариант парсить урл, ну не знаю, нуно подумать, а вообще это будет правильно ?

По такому принципу работают современные фреймворки
PM MAIL   Вверх
neoks
Дата 8.11.2011, 15:24 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Ну лан, буду парсить URL, только не совсем понятен принцип, если мона то плиз примерчик  smile 
PM MAIL   Вверх
Vas
Дата 8.11.2011, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: нет
Всего: 28



.htaccess
Код

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]


Все что не является папкой или файлом используем в качестве одного параметра для index.php. Ну собственно перенаправляем все на последнего и получаем как было ранее сказано:
Цитата($дмитрий @  8.11.2011,  14:14 Найти цитируемый пост)
"В современных web-приложениях принято использовать концепцию единой точки входа. Эта концепция сводится к тому, что все запросы к серверу приложения переадресовываются на один файл, который, исходя из параметров запроса, координирует дальнейшее поведение скрипта."


Например если передать взять url типа
www.yoursite.ru/home/45/news/189
то в файле index.php у нас будет массив $_GET содержать одно значение вида
/home/45/news/189

Далее передаем его в модуль и там парсим как нам угодно или сначала парсим, а потом передаем в модуль, ну собственно и все.


Это сообщение отредактировал(а) Vas - 8.11.2011, 18:18


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1250 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.