|  | 
	| 
			| 
					
						| Finch 
								СпокойныйАдминистратор    Offline 
								Пол:    
								Пролетал мимо
								
								
								
								
								
							 | 
								|  | « Ответ #1 : 22-09-2012 05:25 »  |  | 
 
 Такой URL вызовет 404 ошибку. Следовательно тебе нужно переписать ссылку на свой обработчик ошибки. И в обработчике уже анализировать и переправлять URL. |  
						| 
								|  |  
								|  |  Записан | 
 
 Не будите спашяго дракона.              Джаффар (Коша) |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #2 : 22-09-2012 05:45 »  |  | 
 
 Finch, не путай парня
 Rewriterule ^uslugi/transport/(.*) index.php?action=$1 [NC, QSA,L]
 
 Нужно правильно понимать ЧПУ
 откуда взялись uslugi/transport/ ?
 Из-за категорий?
 а как быть например с  такой конструкцией? /usligi/NeTransport/
 
 тогда правило может выглядеть
 
 Rewriterule ^uslugi/(.*)/(.*) index.php?category=$1&action=$2$ [NC, QSA,L]
 
 
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 22-09-2012 05:50 от Sla » |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #3 : 22-09-2012 06:29 »  |  | 
 
 Не создавате головняка=) Такой URL вызовет 404 ошибку. Следовательно тебе нужно переписать ссылку на свой обработчик ошибки. И в обработчике уже анализировать и переправлять URL.
 Ни кого не нужно переписывать, просто прописать в .htaccess чтоб в переменую заносился конец URL`a до знака "/" и перенаправлялся  на страницу index.php?action=(эта переменная)  Finch, не путай парня
 Rewriterule ^uslugi/transport/(.*) index.php?action=$1 [NC, QSA,L]
 
 Нужно правильно понимать ЧПУ
 откуда взялись uslugi/transport/ ?
 Из-за категорий?
 а как быть например с  такой конструкцией? /usligi/NeTransport/
 
 тогда правило может выглядеть
 
 Rewriterule ^uslugi/(.*)/(.*) index.php?category=$1&action=$2$ [NC, QSA,L]
 
 
 Вот именно не путай меня=)) Я всё прекрасно понимаю, но и поймите меня, расскажу полностью проблему. Делаю кмс, пока это жалкое подобие, для сайта визитки пока, а дальше больше. Так вот все страницы делаются в админке, есть подразделы, разделов, (ну эт уже не визитка)  хотите зайдите гляньте:http://sparta-logistic.ru/management/  логин и пасс test Всё ссылки хранятся в бд, у каждой есть столбец action и link = путь этой ссылки, если у нас естьwww.sitename.ru/uslugi/transport/catalog то action = catalog то link на эту ссылку = uslugi/transport. uslugi/transport добавляется в БД в столбец link когда создаётся раздел. но это не важно=) Главное чтоб произошёл редирект на index.php?action=catalog так как если я буду делать как сказал Sla то представь мне что прописывать каждый раз в .htaccess что ему делать, а эти ссылки меняются в админке мгновенно и что...всё слетело. Я хочу чтоб .htaccess брал нажатый URL, отрезал конец до / говорил что это $1 ну и дальше перенаправлял на index.php?action=$1  А уже файл index.php в который подключается контент (content.php) работал с полученной переменной, вытягивал все данные по ней из БД и отображал на странице=) Всё элементарно!) Только как это сделать? |  
						| 
								|  |  
								| « Последнее редактирование: 22-09-2012 06:37 от Avdey » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #4 : 22-09-2012 06:35 »  |  | 
 
 Avdey, если я правильно понял, "uslugi/transport" является статической частью URL? Тогда первый вариант Славы тебе подойдет. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #5 : 22-09-2012 06:38 »  |  | 
 
 Avdey, ничего не понял...Попробуй рассказать еще раз
 
 Далее, пока не поздно
 потом переделывать будет дороже
 Покажи модель страницы, то что сейчас - это УГ, ты многого, скорей всего, не понимаешь, или не предусмотрел
 
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #6 : 22-09-2012 06:42 »  |  | 
 
 Avdey, если я правильно понял, "uslugi/transport" является статической частью URL? Тогда первый вариант Славы тебе подойдет.
 Перечитай мой пост, я дописал, первый вариант не поможет, так как человек захочет в админке поменять action ссылки с transport на transport_1, ну и пойдут у меня по сайту автоматом "uslugi/transport_1" а в .htaccess прописано то ^uslugi/transport и всё сломалось=) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #7 : 22-09-2012 06:45 »  |  | 
 
 Есть два способа обработки ЧПУс помощью htccess и программного
 
 Rewriterule ^uslugi/transport/(.*) index.php?action=$1 [NC, QSA,L]
 Вот этот хорош, на уже существующем проиндесированном сайте, но никак на новом
 представь себе, что тебе понадобится добавлять еще ветки твоего дерева?
 
 наиболее приемлемым, возможно будет третий вариант
 
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
 
 и уже в контроллере обрабатывать $_GET['page']
 1. Разобрать строку запроса
 2. Построить иерархию категорий
 3. Выполнить действие (вызвать соответствующий контроллер)
 
 Под контроллером я понимаю, обработчик запросов.
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #8 : 22-09-2012 06:50 »  |  | 
 
 Да что тут не понятного, вот этот вариант не подходит:  Rewriterule ^uslugi/transport/(.*) index.php?action=$1 [NC, QSA,L]
Так как не будет на сайте статических частей ссылок, они все могут меняться. Так что забыли про этот вариант!!! Далее, допустим есть ссылка на странице www.sitename.ru/uslugi/transport/catalog  посетитель нажал на неё и скажите что мне нужно прописать в .htaccess чтоб его перенесло на www.sitename.ru/index.php?action=catalog  а в строке URL осталось www.sitename.ru/uslugi/transport/catalog Как-то так! |  
						| 
								|  |  
								| « Последнее редактирование: 22-09-2012 06:53 от Avdey » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #9 : 22-09-2012 06:53 »  |  | 
 
 Ну вот жеRewriterule ^.*/(.*) index.php?action=$1 [NC, QSA,L]
 И волки целы и овцы сыты
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #10 : 22-09-2012 07:00 »  |  | 
 
 Avdey, непонимание задачи - первый признак отсутствия стадии проектирования.
 Чтобы не переписывать правила rewrire каждый раз при изменениях в настройках сайта, воспользуйся советом Finch и разбирай запрос самостоятельно. Для корректной работы 404 в DocumentRoot не должно быть цепочки директорий "uslugi/transport".
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	|  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #12 : 22-09-2012 07:05 »  |  | 
 
 ну... блин...я писал с головы, не проверяя мог и ошибиться, проверяй на локалке
 
 Rewriterule ^(.+)/(.*) index.php?action=$2 [NC, QSA,L]
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #13 : 22-09-2012 07:08 »  |  | 
 
 RXL, не надо обрабатывать исключение, проще  и понятней, а самое главное наглядней
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
 
 Я однажды чуть моск не снес, чтоб найти контроллер в случае обработчика ошибки
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #14 : 22-09-2012 07:15 »  |  | 
 
 RXL, не надо обрабатывать исключение, проще  и понятней, а самое главное наглядней
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
 
 Я однажды чуть моск не снес, чтоб найти контроллер в случае обработчика ошибки
 
 
 Попробывал ваш вариант, работает с корневыми разделами, а как только пошли в глуб то вот что получается http://sparta-logistic.ru/uslugi/avtomobilne_perevozki жмите смотрите. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #15 : 22-09-2012 07:18 »  |  | 
 
 Что ты знаешь об относительных и абсолютных путях? |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #16 : 22-09-2012 07:21 »  |  | 
 
 Rewriterule ^(.+)/(.*) index.php?action=$2 [NC, QSA,L] этот вариан вообще не робит. Я как понимаю что скобки говорят о переменной, так зачем писать два раза скобки?  Мы же в переменную записываем только конец. Может нужно так  Rewriterule ^.*/(.*)$ index.php?action=$1 [NC, QSA,L] Сейчас попробуюДобавлено через 4 минуты и 56 секунд: Что ты знаешь об относительных и абсолютных путях?
 вот что http://phpfaq.ru/paths  =))) |  
						| 
								|  |  
								| « Последнее редактирование: 22-09-2012 07:26 от Avdey » |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #17 : 22-09-2012 07:30 »  |  | 
 
 Avdey, отвечать на вопрос ссылками некрасиво. Типа сами разберитесь, что я там мог узнать. Мало ли, что ты там читал - важно, что ты понял. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #18 : 22-09-2012 07:39 »  |  | 
 
 Avdey, что в этой ссылке, о каких путях идет речь и где?
 Rewriterule ^(.*)$ index.php?action=$1 [NC, QSA,L]
 Кстати, вот это правило - и создают твою проблему
 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #19 : 04-10-2012 05:23 »  |  | 
 
 Что ты знаешь об относительных и абсолютных путях?
 Относительный путь, это путь от места(файла) в котором мы вызываем этот путь(ссылку) пример: ../../uslugi.php - вернуться по каталогу два раза назад и там будет файл uslugi.php Абсолютный путь, это путь прописанный целиком из корня системы, в данном случаи из корня сайта. Я тут пересмотрел свои мысли по поводу htaccess и понял что не туда смотрел. Что мне нужно прописать в htaccess если я имею ссылки на сайте вот такого типа sparta-logistic.ru/startovaya sparta-logistic.ru/uslugi sparta-logistic.ru/startovaya/news sparta-logistic.ru/startovaya/news/pervoya_novost чтоб он брал всё что после sparta-logistic.ru/  и определял в переменную action зарание перенаправляя на sparta-logistic.ru/index.php -> startovaya -> uslugi -> startovaya/news -> startovaya/news/pervoya_novost Rewriterule ^(.*)$ index.php?action=$1 [NC, QSA,L]
Не работает.... А потом буду работать с action по средством функций php explode(), заносить её в массив, перебирать его и брать последний элемент и уже по нему выводить страницу из БД. |  
						| 
								|  |  
								| « Последнее редактирование: 04-10-2012 05:29 от Avdey » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #20 :  04-10-2012 05:47 »   |  | 
 
 Rewriterule ^(.*)$ index.php?action=$1 [NC, QSA,L]
 
 Не работает....
 
 Чтоб дать ответ, одной строки мало. До этого тоже есть правила. |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Avdey 
								Участник    Offline | 
								|  | « Ответ #21 : 04-10-2012 05:51 »  |  | 
 
 RewriteEngine   onRewriterule ^(.*)$ index.php?action=$1 [NC, QSA,L]
 
 Чтоб дать ответ, одной строки мало. До этого тоже есть правила.Вот так? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #22 : 04-10-2012 08:52 »  |  | 
 
 Не верю!!!
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php?page=$1 [QSA,NE,L]
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	|  |