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

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

Пример:

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

в

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

1 ответ

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

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

а также

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

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

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

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

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

Другие вопросы по тегам