Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Прошу помощи по .htaccess. Переназначить параметр можно?   Найти похожие ветки 

 
AV ©   (2012-05-23 19:53) [0]

сам мало что знаю, пока читаю доку, но разобраться думаю не скоро получится..

Есть файл, есть там такая запись
RewriteCond %{QUERY_STRING} ^ACTION=check(.*)$
RewriteRule ^pay[/]*$ getbalance.php?%1 [L]

как понимаю, и как проверил
Если в параметрах строки есть Action=check, то надо запустить getbalance.php. Пробовал с ?Action=check и без, правил getbalance.php - все правильно, если есть, то выполняется getbalance.php и выдает, что там понаписано выдавать.

А надо мне что бы параметр этот поменялся. Т.е. если пользователь задает
http://ip:8000/pay?ACTION=check
выполнилось
http://ДРУГОЙ_IP?ACTION=super_check

можно так намудрить?


 
Pavia ©   (2012-05-23 20:17) [1]

Можно.  Только не спрашивай как. Сам возился день разбирался так я эту систему толком и не понял.

В первой строчки ошибка. ^ACTION=
У тебя строчка запроса начинается с http а не с ACTION поэтому шляпу писать не правильно либы без неё либы целиком с самого первого символа описываем запрос.
Лучше описать целиком так как проверка условий идет дважды вначале по Http запросу(c "http") потом по запросу к файлу в папке(без "http")

RewriteCond %{QUERY_STRING} ^http://ip:8000/(.*)ACTION=check(.*)
И RewriteRule надо целиком прописать http://ДРУГОЙ_IP/?ACTION=super_check%2


 
AV ©   (2012-05-23 21:23) [2]

Спасибо.
не, ошибки нет. Там еще стоит
RewriteEngine on
Options +FollowSymlinks
RewriteBase /

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

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

т.е. надо именно туда обратится как то так
RewriteRule надо целиком прописать http://ДРУГОЙ_IP/?ACTION=super_check%2
и вернуть так, как будто это тут было выполнено

И все еще осложняется, что надо сравнивать этот экшен по регулярке(там много цифр еще может быть и букв), что бы правило срабатывало не всегда.

вот, нашлось
http://stackoverflow.com/questions/1497184/replacing-a-querystring-parameter-value-using-mod-rewrite
сегодня уже поздно - завтра день начнется с мучительного
9-30
написал/сохранил/проверил/поругался на все эти web_заморочки
написал/сохранил/проверил/поругался на все эти web_заморочки
...
написал/сохранил/проверил/поругался на все эти web_заморочки
12-30. пошел на обед
:)


 
Pavia ©   (2012-05-23 21:49) [3]


> А из php делать редирект - получается, что юзер переправляется
> туда сам, из браузера. А доступа туда не у всех есть
>

тогда  .htaccess не подходит.

Вам надо получить код страницы в php коде.


 
KSergey ©   (2012-05-23 21:57) [4]

> А надо мне что бы параметр этот поменялся. Т.е. если пользователь задает
> http://ip:8000/pay?ACTION=check
> выполнилось
> http://ДРУГОЙ_IP?ACTION=super_check

Э, погоди. Это как-то неправильно хочешь ты его использовать. Ну во всяком случае с точки зрения реврайт-руля.
Оно ведь для другого предназначено: WEB-сервер поймал запрос - и проверяет его на  RewriteRule. Если нашел подходящее - то заменяет сообразно шаблону и продолжает САМ выполнять, сам этот WEB-сервер.

А если хочется чтобы фактически выполнился запрос к совершенно дургому адресу, то

1) Прописать редирект для пользовательского браузера типа так:
# редирект plazma-service.ru -> www.plazma-service.ru
RewriteCond %{HTTP_HOST} ^plazma-service.ru
RewriteRule ^(.*)$ http://www.plazma-service.ru/$1 [R=301,L]

ну и как-то сюда прикрутить передачу оставшейся части строки с параметрами, чтобы получилась требуемая подмена на ACTION=super_check
Лень думать/экспериментироать, примеров про R=301 можно сыскать много.

но по этому условию пользователь всегда будет фактически уходить от тебя н другой адрес.

2) Внутри своего скрипта при помощи curl выпоняем нужный запрос к нужному сайту, разбираем пришедший оттуда ответ и формируем ответ для нашего пользоватля.
В этом случае с точки зрения пользователя выглядит так, что он открыл некую страницу на нашем сайте, а фактически какую-то информацию мы получили с другого. Что вполне нормально. (см. реклама яндекса/гугля, например)


 
KSergey ©   (2012-05-23 21:59) [5]

(я не виноватый что оно выделяет!!
надо было в CODE обернуть, наверное...)


 
megavoid ©   (2012-05-24 08:07) [6]

RewriteBase /
RewriteRule ^(.*)country/(.*)$ http://otherip/?country=$2

что-то типа того, может быть? замудрённый этот mod_rewrite


 
AV ©   (2012-05-24 12:01) [7]

вот так перебрасывает
RewriteCond %{QUERY_STRING} ^ACTION=payment(.*)$
RewriteRule ^pay[/]*$ http://localhost:8101/webpaystest/WebPays?ACTION=vendor [P,L,QSA]


т.е. если набираем
http://192.168.1.10:8000/pay?ACTION=payment
то строка не меняется, а вывод такой, будто набирали
http://192.168.1.10:8101/webpaystest/WebPays?ACTION=vendor


 
AV ©   (2012-05-24 12:06) [8]

теперь надо с регуляркой разобраться
если набрали
http://192.168.1.10:8000/pay?ACTION=число1число2-число3число4
надо перебросить как
http://192.168.1.10:8101/webpaystest/WebPays?ACTION=SUPER_ACTION&ADD_INFO=число1число2-число3число4

но если было
http://192.168.1.10:8000/pay?ACTION=число1число2(тут нет тире)число3число4
надо перебросить так же
http://192.168.1.10:8101/webpaystest/WebPays?ACTION=число1число2(тут нет тире)число3число4


 
KSergey ©   (2012-05-24 12:41) [9]

> AV ©   (24.05.12 12:06) [8]
> теперь надо с регуляркой разобраться

Я бы для начала
а) попробовал тот же фокус провернуть с другим хостом, а не портом. Вы ведь именно на другой IP хотите залезть, на другую совсем машину верно? как-то мне сомнительно, что оно сработает.
б) поскольку вижу слова "payment" - сильно подозреваю, что в реале работа будет по https-протоколу, а это сильно другое, там такие фокусы должны на отдельные проблемы напарываться, причем, возможно, принципиально не решаемые.


 
AV ©   (2012-05-24 12:49) [10]


> KSergey ©   (24.05.12 12:41) [9]


> а) попробовал тот же фокус провернуть с другим хостом, а
> не портом. Вы ведь именно на другой IP хотите залезть, на
> другую совсем машину верно? как-то мне сомнительно, что
> оно сработает.

Нет, тут все ок. Тут я не парюсь.
Если не будет работать - замаппирую localhost:8101 туда
если нет - перенесу сервис сюда же. Оба адреса наши, внутренние.


> б) поскольку вижу слова "payment" - сильно подозреваю, что
> в реале работа будет по https-протоколу, а это сильно другое,
>  там такие фокусы должны на отдельные проблемы напарываться,
>  причем, возможно, принципиально не решаемые.

ну да.
Но надо же попробовать хотя бы


 
KSergey ©   (2012-05-24 17:41) [11]

ой мама-мама дорогая.....
не, не буду наверное с кредитки больше платить
боязно

я-то думал и правда бывают корейско-китайские хакеры, а оказывается все как обычно


 
AV ©   (2012-05-24 18:14) [12]

ну заприкалывали, заприкалывали :)
кто же будет это все, не попробовав 150 раз, выносить из избы?

лучше подскажите
если пишу так
RewriteCond %{QUERY_STRING} ^ACTION=payment&ACCOUNT=(.....-.....)(.*)$

RewriteRule ^pay[/]*$ http://localhost:8101/webpaystest/WebPays?ACTION=payment&ACCOUNT=00000&ADD_INFO=%1%2


то получаю как и ожидаю, переданный ACCOUNT сменился на 00000, а реальное значение ушло в параметр ADD_INFO.

Вопрос. Как написать, если в строке уже есть параметр ADD_INFO  ?
причем, не понятно, на каком месте он идет в параметрах. + Его может и не быть.
Преследуется задача туда записать ACCOUNT, в начало или в конец, не имеет значение
т.е. вместо переданных
ACTION=payment&ACCOUNT=12345-12345&(может еще что-то, а может и нет)&ADD_INFO=ЧТО-ТО(а может и нет этого параметра)&(может еще что-то, а может и нет)

на другой порт ушло
ACTION=payment&ACCOUNT=00000&(может еще что-то, а может и нет, в зависимости от того, было или нет)&ADD_INFO=12345-12345+ЧТО-ТО_если_было&(может еще что-то, а может и нет, в зависимости от того, было или нет)


 
AV ©   (2012-05-24 21:15) [13]

решено
вот так надо было

RewriteCond %{QUERY_STRING} ^ACTION=payment(.*)&ACCOUNT=(\d\d\d\d\d-\d\d\d\d\d)(.*)&ADD_INFO=(.*)$
RewriteRule ^pay[/]*$ http://localhost:8101/webpaystest/WebPays?ACTION=payment&ACCOUNT=0&ADD_INFO=%2%4%1%3$1 [P,L,QSA]


а насчет

> не, не буду наверное с кредитки больше платить

это как раз наоборот - обход "впаренного" софта
Я обнуляю аккаунт, что бы платеж не прошел полюбому! (были случаи, когда из буфера оператор вставлял ИНН в поле сумма. Даже компьютер был сильно удивлен таким платежам)
т.о. любой платеж падает в "плохие", откуда его люди вручную проводят. (Возможно перезвонив клиенту, в случае особого подозрения...)


 
KSergey ©   (2012-05-24 22:11) [14]

Интересно было бы ознакомиться с полным протоколом взаимодействия.
Обычно это делается не так.
Но готов поверить, что все бывает сильно иначе чем то, что встречалось мне )
Ибо после того, как одна вроде как большая и технологически продвинутая вроде контора выдала dll с торчащими наружу дельфовыми String, а когда им сказали что так не пойдёть - они долго удивлялись и уверяли, что "у нас все работает, проблема на вашей стороне" - я уже ничему не удивляюсь.


 
Влад   (2012-05-24 22:21) [15]


> Интересно было бы ознакомиться с полным протоколом взаимодействия.

мне тоже :)

после
http://localhost:8101/webpaystest/WebPays?
сделанного на яве
(без исходника(декомпилятор.. я и в прокоментированном тексте на яве не очень много понимаю, а декомпиленном, думаю, вообще невооруженным глазом бкдет неразглядеть :) ))
, вижу уже запись в БД(шифрованная процедура).
т.о. единственная возможность перехватить и поменять параметры представляется именно так -
поднять апач, который возмет запрос первым


 
Влад   (2012-05-24 22:24) [16]

AV это я. Домой пришел.


 
KSergey ©   (2012-05-25 06:21) [17]

> Влад   (24.05.12 22:21) [15]
> > Интересно было бы ознакомиться с полным протоколом взаимодействия.
> мне тоже :)

Я конечно прошу прощения, но я вас не понимаю.


 
AV ©   (2012-05-25 08:34) [18]

Да и я прошу прощения. Юмор такой, дурацкий.
Но не скажу, ибо нельзя
Тем более некоторые моменты не совсем ясны самому.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.059 c
3-1277448717
pavel_guzhanov
2010-06-25 10:51
2013.03.22
Можно ли сравнить два набора данных?


15-1346949003
Опять я
2012-09-06 20:30
2013.03.22
Вопрос по Яндекс-почте.


15-1339792202
Юрий
2012-06-16 00:30
2013.03.22
С днем рождения ! 16 июня 2012 суббота


15-1328797365
Empleado
2012-02-09 18:22
2013.03.22
Billiards masters


2-1332009690
теркин
2012-03-17 22:41
2013.03.22
Использование полиморфных объектов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский