- Сложная замена URL в nginx или htaccess ?, Pahanivo, 15:19 , 25-Июн-15 (1)
> Подскажите как решить задачку с подменой URL и где лучше в nginx > или htaccess ? > Нужно вместо страницы > http://site.ru/page?filter=&fd13=105 > переадресовать пользователя на страницу: > http://site.ru/page/subpage > Но показать ему при этом содержимое из: > http://site.ru/page?filter=&fd13=105&code=m и какой в этом, мать его, сакральный смысл? > Если в общем случае, то это будет звучать как: > 1) если URL заканчивается параметром "?filter=&fd13=105", то надо в адресной строке заменить > этот параметр на "/subpage" > 2) и далее следом если URL заканчивается на /subpage, то надо показать > данные c URL что вызывается, но в котором заменено "/subpage" на > "?filter=&fd13=105&code=m" сначала накидают быдлокод, а потом устраивают вечеринки с бубнами ... 1) отдавать нормальные линки не пробовали? 2) писать нормальный код не пробовали? 3) маны лицезреть не пробовали? 4) решить задачу разбивкой на две: замена №1 СРАЗУ на №3, и замена №2 на №3 5) остальное в манах реврайта мой юный падаван ... это как я понял - что вы там подразумевали я хз ... > Ну и чтобы при этом зацикливания не произошло, хотя вроде и не > должно... чтобы произошло зацикливание №1 и №3 должны быть идентичные, хотя когда мозга нет и руки из жо... то все возможно! > Если просто напрямую вызовут URL заканчивающийся на /subpage, то естественно тоже чтобы > 2-ое правило отработало.
- Сложная замена URL в nginx или htaccess ?, anstrem, 15:27 , 25-Июн-15 (2)
Сакральный смысл простой:Пользователь на сайте выбирает опции фильтра: мальчик или девочка В результате генериться URL с параметрами например: http://site.ru/page?filter=&fd13=105 А теперь надо чтобы вместо этой хрени на экране у него сформировался в адресной строке ЧПУ http://site.ru/page/subpage , но данные были получены с этой хрени с еще одним доп параметром, т.е. отсюда http://site.ru/page?filter=&fd13=105&code=m Все это для того чтобы реализовать вот такой же вариант (при этом ничего не меняя в коде, а только пошаманив в htaccess, если это конечно возможно): http://www.kinderly.ru/collection/krossovki http://www.kinderly.ru/collection/krossovki/dlya-devochki http://www.kinderly.ru/collection/krossovki/dlya-malchika Предполагалась где то вот такая конструкция: RewriteCond %{QUERY_STRING} ^filter=%26fd13%3D105$ RewriteRule ^(.*)$ $1/dlya_malchikov? [L,R=301] RewriteRule ^/dlya_malchikov$ ?filter=%26fd13%3D105$&language_code=nl [L,NE] Т.е. если в параметрах видим "filter=%26fd13%3D105", то делаем редирект на /dlya_malchikov, а потом если видим в адресе /dlya_malchikov, то показываем данные из ?filter=%26fd13%3D105$&code=nl Первая часть с редиректом отрабатывает, а вот со второй проблема, на 404 ошибку кидает все время, хотя если ручками вбить такой URL (?filter=%26fd13%3D105$&code=nl), то он открывается ...
- Сложная замена URL в nginx или htaccess ?, Pahanivo, 16:03 , 25-Июн-15 (3)
> Сакральный смысл простой: > Пользователь на сайте выбирает опции фильтра: мальчик или девочка > В результате генериться URL с параметрами например: http://site.ru/page?filter=&fd13=105 > А теперь надо чтобы вместо этой хрени на экране у него сформировался > в адресной строке ЧПУ http://site.ru/page/subpage , но данные были получены с > этой хрени с еще одним доп параметром, т.е. отсюда http://site.ru/page?filter=&fd13=105&code=m вы пытаетесь синтезировать некий алгоритм, смысла я так и не понял - понял что надо заменить через жопу урлы, но _ЗАЧЕМ_ так и не понял. > Все это для того чтобы реализовать вот такой же вариант (при этом > ничего не меняя в коде, а только пошаманив в htaccess, если > это конечно возможно): т.е. научить код реагировать "правильно" на "корявые" ссылки при этом не меняя кода? оригинально! > http://www.kinderly.ru/collection/krossovki > http://www.kinderly.ru/collection/krossovki/dlya-devochki > http://www.kinderly.ru/collection/krossovki/dlya-malchika > Предполагалась где то вот такая конструкция: > RewriteCond %{QUERY_STRING} ^filter=%26fd13%3D105$ > RewriteRule ^(.*)$ $1/dlya_malchikov? [L,R=301] > RewriteRule ^/dlya_malchikov$ ?filter=%26fd13%3D105$&language_code=nl [L,NE] > Т.е. если в параметрах видим "filter=%26fd13%3D105", то делаем редирект на /dlya_malchikov, > а потом если видим в адресе /dlya_malchikov, то показываем данные из > ?filter=%26fd13%3D105$&code=nl а почему, блиать, сразу не переписать первое на третье?????? > Первая часть с редиректом отрабатывает, а вот со второй проблема, на 404 > ошибку кидает все время, хотя если ручками вбить такой URL (?filter=%26fd13%3D105$&code=nl), > то он открывается ...
- Сложная замена URL в nginx или htaccess ?, anstrem, 16:06 , 25-Июн-15 (4)
> а почему, блиать, сразу не переписать первое на третье??????блиать, потому что в адресной строке надо чтобы было второе, а на экране чтобы выводилось то что находится по третьей ссылке А переписывать чужой говнокод не всегда возможно. Вместо туевой кучи бесцельных комментов не по теме, лучше бы сказали как так сделать...
- Сложная замена URL в nginx или htaccess ?, Pahanivo, 16:21 , 25-Июн-15 (5)
>> а почему, блиать, сразу не переписать первое на третье?????? > блиать, потому что в адресной строке надо чтобы было второе, а на > экране чтобы выводилось то что находится по третьей ссылке 1) иногда лучше молчать, и казаться умнее, чем заговорить и развеять все сомнения (С) народная мудрость 2) феерично 3) то что браузер запросил, то он в адресной строке и пишет (GET) 4) для этого есть POST, сессии и т.д. > А переписывать чужой говнокод не всегда возможно. fix: не всегда умеют > Вместо туевой кучи бесцельных комментов не по теме, лучше бы сказали как > так сделать... мои коменты были весьма таки по теме, я просто пытался понять "зачем", но вы подтвердили мои самые худшие сомнения ...
- Сложная замена URL в nginx или htaccess ?, anstrem, 16:28 , 25-Июн-15 (6)
> мои коменты были весьма таки по теме, я просто пытался понять "зачем", > но вы подтвердили мои самые худшие сомнения ...Я может не очень понимаю как работает htaccess, но разве такое не возможно ? Браузер запрашивает URL1 с параметрами Апач по соответствующей директиве в htaccess делает внешний редирект на другую адресную строку без параметров и фактически запускает новую сессию с новым URL2 Получив запрос по новому URL2 Апач по другой директиве в htaccess не меняя URL2 (внутренний редирект) выдает данные с третьего URL3 Или так оно не может работать ?
- Сложная замена URL в nginx или htaccess ?, Square, 16:40 , 25-Июн-15 (7)
>> мои коменты были весьма таки по теме, я просто пытался понять "зачем", >> но вы подтвердили мои самые худшие сомнения ... > Я может не очень понимаю как работает htaccess, но разве такое не > возможно ? > Браузер запрашивает URL1 с параметрами > Апач по соответствующей директиве в htaccess делает внешний редирект на другую адресную > строку без параметров и фактически запускает новую сессию с новым URL2 > Получив запрос по новому URL2 Апач по другой директиве в htaccess не > меняя URL2 (внутренний редирект) выдает данные с третьего URL3 > Или так оно не может работать ?урл /dlya_malchikov - он же один только может быть да? а урлов ?filter=%26fd13%3D105$&code=nl - дофига ? как по вашему сервер опознает какую страницу из этих дофига он должен показать если все клиенты пришлют ему только "/dlya_malchikov"? попробуйте поискать тут: http://www.yandex.ru/search/?text=ЧПУ%20сайт&clid=9582&lr=213 http://blogiseo.ru/blogovedenie/kak-sdelat-chpu-dlya-sajta.html
- Сложная замена URL в nginx или htaccess ?, anstrem, 16:58 , 25-Июн-15 (8)
> Вы не понимаете. > вид урла рисует БРАУЗЕР. > Вы, правкой htaccess, НИКАК не сможете поменять то что рисует браузер. > А браузер вам нарисует ту ссылку которая в коде странички. > На сайте который вы привели - включен ЧПУ.Чета я действительно уже ничего не понимаю А что тогда описано в бесконечных FAQ в сети с заголовками: "Управляем URL с помощью .htaccess и mod_rewrite" ? Я у себя на сайте без проблем же меняю что рисует браузер через .htaccess Запрашиваю в адресной строке браузера http://site.ru/kedyi-krossovki?filter=%26fd13%3D105 В результате после редиректа в браузере получаю: http://site.ru/kedyi-krossovki/dlya_malchikov Делается это вот этим двумя командами в htaccess: RewriteCond %{QUERY_STRING} ^filter=%26fd13%3D105$ RewriteRule ^(.*)$ $1/dlya_malchikov? [L,R=301] Это же обычный 301 редирект с одного URL на другой. Ну можно его в nginx еще сделать же... Но никакого URL http://site.ru/kedyi-krossovki/dlya_malchikov у меня естественно на сайте нет и поэтому надо дальше проброс сделать через внутренний какой то скрытый редирект что тоже в куче форумов с заголовками "Внутренний редирект без смены URL" Все прочел, но что то не склеивается :)
- Сложная замена URL в nginx или htaccess ?, Square, 17:12 , 25-Июн-15 (9)
>[оверквотинг удален] > Делается это вот этим двумя командами в htaccess: > RewriteCond %{QUERY_STRING} ^filter=%26fd13%3D105$ > RewriteRule ^(.*)$ $1/dlya_malchikov? [L,R=301] > Это же обычный 301 редирект с одного URL на другой. > Ну можно его в nginx еще сделать же... > Но никакого URL http://site.ru/kedyi-krossovki/dlya_malchikov у меня естественно на > сайте нет и поэтому надо дальше проброс сделать через внутренний какой > то скрытый редирект что тоже в куче форумов с заголовками "Внутренний > редирект без смены URL" > Все прочел, но что то не склеивается :) Описание: Предположим что мы недавно переименовали страницу bar.html в foo.html и сейчас хотим для обратной совместимости сделать доступным и старый URL. В действительности мы хотим чтобы пользователи использующие старый URL даже не узнали что страницы были переименованы. Решение: Мы перенаправим старый URL на новый через внутренний редирект путем следующих директив: RewriteEngine on RewriteBase /~quux/ RewriteRule ^foo\.html$ bar.html http://www.htaccess.net.ru/doc/mod_rewrite/
- Сложная замена URL в nginx или htaccess ?, anstrem, 17:31 , 25-Июн-15 (10)
> урл /dlya_malchikov - он же один только может быть да? > а урлов ?filter=%26fd13%3D105$&code=nl - дофига ? > как по вашему сервер опознает какую страницу из этих дофига он должен > показать если все клиенты пришлют ему только "/dlya_malchikov"?Да нет, сервер просто должен заменить в любом урл "/dlya_malchikov" на урл "?filter=%26fd13%3D105$&code=nl" Точнее не так !!! Урл сервер должен оставить в данном случае без изменений, то есть как было "/dlya_malchikov" так и должно остаться "/dlya_malchikov" А вот данные сервер должен подгрузить со страницы с "?filter=%26fd13%3D105$&code=nl" Это возможно ? Или это только в PHP, javascript, ajax и т.д. сделать можно ? Вот если я Ваш пример правильно понял выше. Пользователь наберет старый url bar.html и увидит по нему информацию которая на сервера на самом то деле лежит по url foo.html Причем он даже и не узнает от том что bar.html уже нет. Вот и мне надо чтобы пользователь набрал в адресной строке /dlya_malchikov, а увидел информацию со страницы ?filter=%26fd13%3D105$&code=nl (но в адресной строке у него осталось /dlya_malchikov)
- Сложная замена URL в nginx или htaccess ?, Andrey Mitrofanov, 17:40 , 25-Июн-15 (11)
>> как по вашему сервер опознает какую страницу из этих дофига он должен >> показать если все клиенты пришлют ему только "/dlya_malchikov"? > Да нет, сервер просто должен заменить > Точнее не так !!! > Урл сервер должен оставить в данном случае без изменений,Вы уверены, что уже не пора начинать спрашивать _прокси_, переписывающий и URL-и запросов, и выдаваемый в ответ HTML? Хинт: "Неиспраавленное" приложение отдаёт html-и со ссылками внутри на _непереписанные_ URL-и [своих соседних страниц~]. И, да, в общем случае эта задача не разрешима: генерация url-ей js-ами; url-и внутри... ну, скажем, флэшей. Да мало ли ни с чем не совместимой пакости (sip, rtsp?) проскакивает в этом вашем http.
- Сложная замена URL в nginx или htaccess ?, Pahanivo, 17:47 , 25-Июн-15 (12)
> Это возможно ? Или это только в PHP, javascript, ajax и т.д. > сделать можно ?! Н Е В О З М О Ж Н О ! > Вот если я Ваш пример правильно понял выше. Пользователь наберет старый url > bar.html > и увидит по нему информацию которая на сервера на самом то деле > лежит по url foo.html > Причем он даже и не узнает от том что bar.html уже нет. > Вот и мне надо чтобы пользователь набрал в адресной строке /dlya_malchikov, а > увидел информацию со страницы ?filter=%26fd13%3D105$&code=nl (но в адресной строке у него > осталось /dlya_malchikov)
еще раз для очень одаренных: 1) не хотите светить переменные - POST, сессии и т.д. 2) это GET метод, детка! 3) принцип http следующий: а) браузер просил урл у сервера б) уже на сервере происходить подмена урла если включен реврайт, до непостредственной обработки в) подмененный урл реврайт подсовывается веб серверу г) сервер отвечает на переписанный урл е) все конец и тут два важных момента: первый - при каждом новом урле итерация повторится (после редиректа), и данные итерации НЕЗАВИСИМЫЕ, вот чтобы их "увязать" есть переменные в урле (GET), или не в урле (POST), и второй момент - ни браузер ни сервер не знают что урл переписан!
- Сложная замена URL в nginx или htaccess ?, Pahanivo, 17:49 , 25-Июн-15 (13)
> ! Н Е В О З М О Ж Н О ! можно использовать ссылу типа /dlya_malchikov/305/607/xxx/ и т.т. т.е. закодить значиния вариэйблоф в строку - ПОДРУГОМУ НЕВОЗМОЖНО, БЛИАТЬ!
- Сложная замена URL в nginx или htaccess ?, anstrem, 17:59 , 25-Июн-15 (14)
>> ! Н Е В О З М О Ж Н О !А вот так будет ? .htaccess
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,QSA] index.php
$handle = fopen("http://www.webaliser.org".$_SERVER['REQUEST_URI'], "r"); while (!feof($handle)) { $buffer = fgets($handle, 4096); echo $buffer; } fclose($handle);
- Сложная замена URL в nginx или htaccess ?, Pahanivo, 18:03 , 25-Июн-15 (15)
афтар, больше не пиши сюда ....
- Сложная замена URL в nginx или htaccess ?, eRIC, 18:19 , 25-Июн-15 (16)
в этом круговороте редиректов :) я вижу только вот такой смысл реализации:1- если URI = /page?filter=&fd13=105 2- замени/редирект что переехал URI на /page/subpage и обратись 3- URI /page/subpage проксирует запрос на URI /temp (/temp дублирующий код, для того чтобы цикла не было) 4- URI /temp выдает код что и код URI /page?filter=&fd13=105&code=m (по сути два разных файла скрипта)
|