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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как сделать редирект и убрать вложенность из url ч, редирект и убрать вложенность из url 
:(
    Опции темы
listratov
Дата 11.7.2013, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня имеется 

site.ru/catalogue/gos/nalog/lk/
и мне нужно сделать, что бы ссылки имели вид

site.ru/gos/nalog/lk/
site.ru/gos/nalog/
site.ru/gos/
Т.е. выкинуть /catalogue/

Используя так 
RewriteRule ^gos/(.*?)/(.*?)$ catalogue/gos/$1/$2 [L]
и так 
RewriteRule ^(.*?)gos/(.*?)$ $1catalogue/gos?$2

работает, Но мне нужно, чтобы /gos/ подставлялась тоже маркером

типа ^(.*?)/(.*?)/(.*?)$ catalogue/$1/$2/$3 [L] <-  НО так не работает
Подскажите, как сделать?
PM MAIL   Вверх
Arantir
Дата 11.7.2013, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

Репутация: 16
Всего: 55



А просто 
Код

^(.*)$ catalogue/$1

чем не походит?

Добавлено через 8 минут и 43 секунды
Цитата(listratov @  11.7.2013,  08:20 Найти цитируемый пост)
типа ^(.*?)/(.*?)/(.*?)$ catalogue/$1/$2/$3 [L] <-  НО так не работает

Конечно не работает. Ведь в gos/ один слеш, а в регулярке - два.




--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
listratov
Дата 11.7.2013, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



При ^(.*)$ catalogue/$1 
Не открывается адрес site.ru/catalogue

C одним слешем тоже 
#RewriteRule ^(.*?)(.*?)/(.*?)$ $1catalogue/$2?$3
или
#RewriteRule ^(.*?)(.*?)/(.*?)$ $1catalogue/$2/$3
или
#RewriteRule ^(.*?)(.*?)/(.*?)$ catalogue/$1/$2/$3


Все не работает

Это сообщение отредактировал(а) listratov - 11.7.2013, 10:59
PM MAIL   Вверх
Arantir
Дата 11.7.2013, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

Репутация: 16
Всего: 55



Цитата(listratov @  11.7.2013,  09:51 Найти цитируемый пост)
#RewriteRule ^(.*?)(.*?)/(.*?)$ $1catalogue/$2?$3

Надеюсь, знак комментария у Вас в примерах - это только опечатка. С ним то точно работать не будет.


Вам только /gos/* перенаправлять нужно?
Тогда просто
Код

RewriteRule  ^gos/?(.*)$ catalogue/gos/$1
и любые ссылки вида gos/some/thing/ ведут на catalogue/gos/some/thing/



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
listratov
Дата 11.7.2013, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Знак комментария не опечатка, а просто знак комментария, в рабочем примере, конечно его нет. smile 
к сожалению мне не только gos/ нужно там таких как gos/ более 300 и расширяется... smile 

Вообще в идеале мне нужно вообще редирект с 

/catalog/podcatalog/podpodcatalog/f1 на /podcatalog/podpodcatalog/f1

/catalog/podcatalog/podpodcatalog/ на /podcatalog/podpodcatalog/

/catalog/podcatalog/ на /podcatalog/

/catalog/

и все, что после /catalog/ шло бы маркерами, т.к. там их мильон разных подкаталогов и каталогов

Это сообщение отредактировал(а) listratov - 11.7.2013, 11:48
PM MAIL   Вверх
Arantir
Дата 11.7.2013, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


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

Репутация: 16
Всего: 55



Код

RewriteRule  ^(?:catalogue)?/?(.*)$ /catalogue/$1
все с /catalogue/ ведет само на себя, а всему остальному вперед добавляется /catalogue/.

Только вот тогда на сайте, по сути, будут работать только скрипты для /catalogue/*, так как все на него перенаправляется.
Проблема в том, что перенаправление идет задом наперед. То есть, если есть некий /something/, который не должен перенаправляться на /catalogue/something/, то иначе, как проверить все сотни вариантов, серверу не узнать, должен или не должен он туда перенаправляться.

Это сообщение отредактировал(а) Arantir - 11.7.2013, 12:06


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
listratov
Дата 11.7.2013, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Arantir @ 11.7.2013,  10:03)
Код

RewriteRule  ^(?:catalogue)?/?(.*)$ /catalogue/$1
все с /catalogue/ ведет само на себя, а всему остальному вперед добавляется /catalogue/.

Только вот тогда на сайте, по сути, будут работать только скрипты для /catalogue/*, так как все на него перенаправляется.
Проблема в том, что перенаправление идет задом наперед. То есть, если есть некий /something/, который не должен перенаправляться на /catalogue/something/, то иначе, как проверить все сотни вариантов, серверу не узнать, должен или не должен он туда перенаправляться.

Эх... какой бы оптимальный вариант... что бы все работалo и редиректило...[R,L]....

Это сообщение отредактировал(а) listratov - 11.7.2013, 14:30
PM MAIL   Вверх
Gromdron
Дата 13.7.2013, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У вас Битрикс ?

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
listratov
Дата 16.7.2013, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Gromdron @ 13.7.2013,  08:57)
У вас Битрикс ?

Этот ответ добавлен с нового Винграда - http://vingrad.com

umi cms
PM MAIL   Вверх
listratov
Дата 16.7.2013, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Грубо говоря сделал вот так

Код

RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !/catalogue/|/news/|/go/|/articles/|/events/|/stock/|/contacts/|/search/|/sitemap/|/ajax/|/webforms/|//
    RewriteRule ^(.*?)(.*?)/(.*)$  $1catalogue/$2?$3


Это работает для всех подкаталогов то есть /catalogue/one/two/three/

Но так же будет работать и для ссылок, которых нет в правиле !/catalogue/|/news/|/go/|....

Не добавлять же каждый раз в RewriteCond %{REQUEST_URI} новую ссылку...

Нужно что бы выполнялось только для /catalogue/one/two/three/, /catalogue/one/, /catalogue/one/two/ а для /catalogue/ не выполнялось
правило. и для  всех остальных, у которых нет в начале /catalogue/.. то же не выполнялось

А редирект делаю в контроллере
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.

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


 




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


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

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