Apache 2.4.27 mod_rewrite в cgi-bin не работает

Apache 2.4.27 на Oracle Linux 7 x64.

Я могу сделать правильные звонки https://example.com/cgi-bin/helloworld.cgi,
Простой Perl-скрипт возвращает "Hello, world via cgi-bin!"

Я могу делать правильные вызовы статического контента в https://example.com/helloworld.html
Простой HTML-файл возвращает "Hello, world via html!"

я могу использовать RewriteRule как:

RewriteRule "^/test" "/helloworld.html"

Я вижу "Привет, мир через HTML!"

Однако я не могу использовать RewriteRule как:

RewriteRule "^/test" "/cgi-bin/helloworld.cgi"

Это приводит к 400 ошибочных запросов. Но почему я могу назвать это напрямую?

Как мне получить мой RewriteRule работать при переходе в /cgi-bin? Это, кажется, моя проблема. Я пытался добавить [L] а также [L,PT] но не поможет

1 ответ

Я добавляю ту же проблему. Когда я использовал:

RewriteRule "^/test" "/cgi-bin/helloworld.cgi"

Это не сработало. Я должен был использовать LogLevel alert rewrite:trace3 проверить логи. В моем случае переписанный путь был префиксом document_root. Итак, вместо /cgi-bin/helloworld.cgi Я получал /var/www/html/cgi-bin/helloworld.cgi,

Чтобы решить эту проблему, я использовал два флага:

RewriteRule "^/test" "/cgi-bin/helloworld.cgi" [NC,PT]

Этот вопрос связан с https://stackoverflow.com/questions/30065739/mod-rewrite-rewrite-url-to-point-to-cgi-script-but-keep-rewrite-hidden/30067581

Я не уверен, что может быть не так в вашей конфигурации, как у вас ScriptAlias ENV установлен?

Я проверил с конфигурацией ниже, и все, кажется, хорошо на Apache 2.4.10:

<VirtualHost 10.44.0.3:80>

    DocumentRoot "/vat/www/mysite"
    ServerName mysite.example.com
    ErrorLog "/var/log/apache2/mysite.example.com-error_log"
    CustomLog "/var/log/apache2/mysite.example.com-access_log" common

    ScriptAlias "/cgi-bin/" "/var/www/mysite/cgi-bin/"

    <Directory "/var/www/mysite">
          Require all granted
          Options Indexes FollowSymLinks MultiViews
          AllowOverride all
    </Directory>


    <Directory "/var/www/mysite/cgi-bin">
          Options +ExecCGI
          AddHandler cgi-script .cgi
    </Directory>


    RewriteEngine On
    RewriteRule "^/test" "/cgi-bin/test.cgi"

</VirtualHost>

открытие http://mysite.exmaple.com/test открывает скрипт cgi

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