The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"помогите с mod_rewrite"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Редирект)
Изначальное сообщение [ Отслеживать ]

"помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 14-Мрт-10, 02:22 
Здравствуйте!
Помогите составить правило mod_rewrite для httpd.conf

Должна обрабатываться форма по POST и по GET скриптом http://site.ru/cgi-bin/script.pl?param1¶m2 но с другим URL в action:

<form action="http://site.ru/news/param1/param2/" method="post">
<input typr="submit">
</form>

Структура каталогов сервера:
ls -la site.ru/

drwxr-xr-x logs
    error_log
    access_log

drwxr-xr-x docs
    index.html

drwxr-xr-x cgi-bin
    script.pl

Заранее благодарен!

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 17-Мрт-10, 18:53 
ну хоть скажите "RTFM", а то 3 дня тишина...
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "помогите с mod_rewrite"  +/
Сообщение от cuad0 (ok) on 19-Мрт-10, 04:20 
>ну хоть скажите "RTFM", а то 3 дня тишина...

RTFM )

Не забывай, в общем виде GET-урлы имеют вид
/?var1=val1&var2=val2&var3=val3...
у POST-ов урлы нормальные, без этого кавардака.
впрочем, если в script.pl форма парсится вручную, то на правильный формат можно забить болт с высокой колокольни.

Задача mod_rewrite - переписывать url запроса. На этом можно организовать ЧПУ, например.
Это было бы понятно для обычных страниц на сайте, чтобы юзер в браузере видел что-то вроде site.com/news/latest или /news/2010/01/01 и не нервничал из-за обилия &, =, + и, возможно, A%20B%FD%A8%92..

Но в данном случае, можно задуматься, а стоит ли городить ЧПУ для субмита форм. Если форма субмитит POST-ом, то юзер все равно увидит только site.com/script.pl. С GET-ом сложнее, но такова его природа. А mod_rewrite из GET-запроса сделать POST не сможет.

Если данная форма - это универсальная добавлялка контента (где сам контент POST-ится, а параметры, описывающие к чему этот контент относится указаны в виде ЧПУ в action формы), то про GET можно забыть.
И в итоге задача сводится к переводу урла /news/param1/param2 в get-вид к script.pl.
Можно, конечно, в форму накидать hidden-ов, в них указать все эти news, param* и не париться в mod_rewrite, а тупо POST-ить на script.pl, но если уж хочется побаловаться...

В общем, составляем регулярку, которой последовательно превращаем /news... в /script.pl?... Но помни, ровно в полночь url превратится в ...)) Помни, что регулярка - это конечный автомат и если заранее неизвестно, сколько может быть param-ов в урле, то волшебства не получится (на всех может back-reference-ов не хватить, да и вообще все зависнет...). А если всегда столько же, по пофиг.

Надо что-то навроде #/(.+)/(.+)/(.+)#/script.pl?\1&\2&\3# (или как-то так, тут может надо будет обуздать жадность квантификаторов).
Это, ессно, не формат mod_rewrite (мне лень :) ) и вообще тут может быть написана полная туфта, сходная с тем, что я генерил, когда только открыл книжку по регуляркам. Но мне простительно, т.к. предыдущий рабочий день был тяжелым, я зае... устал, сейчас 4 утра и я еще не сплю :)))
Но, надеюсь, общее направление я указал. RTFM ;)
Можно perldoc perlre, можно книжку "Регулярные выражения", можно гугл.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 21-Мрт-10, 07:07 
Спасибо за ответ!

>Это было бы понятно для обычных страниц на сайте, чтобы юзер в
>браузере видел что-то вроде site.com/news/latest или /news/2010/01/01 и не нервничал из-за
>обилия &, =, + и, возможно, A%20B%FD%A8%92..
>

вообще я хочу это использовать, чтобы скрыть технологию, а именно cgi-bin/script.pl

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "помогите с mod_rewrite"  +/
Сообщение от cuad0 (ok) on 22-Мрт-10, 16:02 
>Спасибо за ответ!
>
>>Это было бы понятно для обычных страниц на сайте, чтобы юзер в
>>браузере видел что-то вроде site.com/news/latest или /news/2010/01/01 и не нервничал из-за
>>обилия &, =, + и, возможно, A%20B%FD%A8%92..
>>
>
>вообще я хочу это использовать, чтобы скрыть технологию, а именно cgi-bin/script.pl

Так сделайте action="http://site.com/post" method="POST" в форме,
а в .htaccess что-то типа
RewriteRule ^post$ /cgi-bin/script.pl [L,QSA]
насчет флагов - лень глядеть правильно ли, брал из похожего примера

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 25-Мрт-10, 02:29 
Спасибо за ответ!

>RewriteRule ^post$ /cgi-bin/script.pl [L,QSA]

Вот так не получается в том-то и дело, он ищет cgi-bin после DocumentRoot
DocumentRoot у меня /home/site.ru/docs

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

6. "помогите с mod_rewrite"  +/
Сообщение от cuad0 (ok) on 25-Мрт-10, 13:16 
>Спасибо за ответ!
>
>>RewriteRule ^post$ /cgi-bin/script.pl [L,QSA]
>
>Вот так не получается в том-то и дело, он ищет cgi-bin после
>DocumentRoot
>DocumentRoot у меня /home/site.ru/docs

Прямой вызов в браузере /cgi-bin/script.pl работает?
А ScriptAlias /cgi-bin/ "/full/path" задан?
А <Directory> для каталога cgi-bin?
Если RewriteRule не работает, почитайте про флаги ([L,QSA]), может эти вам не подходят.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

7. "помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 26-Мрт-10, 04:42 
Спасибо за ответ!

>Прямой вызов в браузере /cgi-bin/script.pl работает?

работает

>А ScriptAlias /cgi-bin/ "/full/path" задан?

да, /home/site.ru/cgi-bin

>Если RewriteRule не работает, почитайте про флаги ([L,QSA]), может эти вам не
>подходят.

rewrite срабатывает, но он пытается перекинуть на скрипт в каталоге /home/site.ru/docs/cgi-bin/script.pl вместо /home/site.ru/cgi-bin/script.pl

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

8. "помогите с mod_rewrite"  +/
Сообщение от cuad0 (ok) on 26-Мрт-10, 11:37 

>rewrite срабатывает, но он пытается перекинуть на скрипт в каталоге /home/site.ru/docs/cgi-bin/script.pl вместо
>/home/site.ru/cgi-bin/script.pl

Смотрите и проверяйте настройки апача.
А cама форма, случаем не находится на странице site.ru/docs/bla-bla.html? Тогда action формы и свой RewriteRule в студию.
Еще читайте в доках апача про ScriptAliasMatch, может вам и его хватит.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

9. "помогите с mod_rewrite"  +/
Сообщение от serg email(??) on 27-Мрт-10, 03:27 

>Еще читайте в доках апача про ScriptAliasMatch, может вам и его хватит.
>

спасибо, разбираться некогда, а ScriptAliasMatch хватило ))

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру