Перенаправление Apache с запросов cgi-bin

Я намерен перехватывать URL-запросы, направленные на CGI-BIN, и пересылать их в другой домен с параметрами и https.

Пример:

http://example.com/cgi-bin/scrip1.py?name=Hello

to

https://another.com/cgi-bin/script2.py?name=Hello

Так как запросы имеют CGI-BIN в ссылке, mod_rewrite не работает :/

RewriteRule ^/cgi-bin/script1.py(.*)$ https://%{HTTP_HOST}/cgi-bin/script2.py$1 [NC,R=301,L]

Он работает с запросами, отличными от CGI, но не работает с CGI. Я что-то упускаю?

Примечание. В идеале я хотел бы получить параметры после script1.py и передать их в script2.py.


person Sazzy    schedule 19.04.2014    source источник


Ответы (1)


Начнем с цитаты из документации:

При использовании механизма перезаписи в файлах .htaccess префикс для каждого каталога (который всегда один и тот же для определенного каталога) автоматически удаляется для сопоставления с шаблоном RewriteRule и автоматически добавляется после любой относительной (не начинающейся с косой черты или имени протокола) замены. встречает конец набора правил. См. директиву RewriteBase для получения дополнительной информации о том, какой префикс будет добавлен обратно к относительным заменам.

и

Удаленный префикс всегда заканчивается косой чертой, что означает, что сопоставление происходит со строкой, в которой никогда не было ведущей косой черты. Следовательно, шаблон с ^/ никогда не совпадает в контексте каталога.

Кроме того, совпадающий URL-адрес не включает строку запроса. Предполагая, что вы не определяете новую строку запроса, строка запроса автоматически переносится.

Предполагая, что ваш .htaccess находится в вашем www-root, следующее правило должно помочь:

RewriteRule ^cgi-bin/script1.py$ https://%{HTTP_HOST}/cgi-bin/script2.py [NC,R,L]

Измените R во флагах на R=301 тогда и только тогда, когда все работает как положено. Постоянные перенаправления иногда кэшируются браузером, что приводит к неожиданному и невозможному отладке поведения. Вы хотите использовать временные перенаправления во время тестирования.

person Sumurai8    schedule 19.04.2014