1

Apacheをインストールしたubuntuマシンがあります。Web ページを使用して、cgi を介して簡単なシェル スクリプトを実行し、ホーム画面に戻りたいと考えています。戻るステップも自動にしたいです。正常に動作する apache.conf にリダイレクトを設定しましたが、スクリプトがまったく実行されません。

スクリプトを実行してからリダイレクトを適用する方法はありますか?

コメント:これ
が 答えかもしれませんが、よくわかりません。

4

2 に答える 2

1

cgiスクリプトにこのような出力をさせることはできませんか?

<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://www.your-home-page.com/">
于 2012-06-17T09:30:22.707 に答える
1

あなたのApacheは、実行される前にCGIスクリプトへのアクセスをリダイレクトすると思います。

cgi-script でリダイレクトを行う必要があります。次の 2 つの方法があります。

  1. リンクした例のように、メタリダイレクトを含む単純な html ページを出力します。これにより、ブラウザーに新しいサイトを読み込むように指示されます。
  2. http リダイレクション ヘッダーを出力するスクリプトを作成できます。これにより、Web ブラウザーに新しいサイトをロードするように指示することもできます。ここにperlの例があります:

    #!/usr/bin/perl
    use CGI;
    my $c = CGI->new();
    
    print $c->redirect("http://yoursite");
    

    このスクリプトをコンソールで呼び出すと、次のように出力されます。

    Status: 302 Found
    Location: http://yoursite
    

perl CGI モジュールのようなヘルパー モジュールを使用してこのヘッダーを生成するのが最も簡単です。ただし、上記の行を直接印刷することもできます。

Web ページからシェル スクリプトを呼び出したい場合は、サーバー側のインクルードを使用することもできます。たとえば、php を使用する場合は、system()またはexec()を使用して php ページからスクリプトを呼び出します。

注意の最後の言葉: cgi または php のシステム コールを介して apache からスクリプトを実行することは、次の理由から非常に洗練されたソリューションではありません。

  • セキュリティ: ユーザーがスクリプトを取得して、望ましくないことを実行できる可能性があります (「コマンド インジェクション」を探してください)。
  • パフォーマンス: Linux システムは、すべての cgi またはシステム コールで新しいプロセスを作成します。負荷の高いサイトでは、これによりパフォーマンスが低下する可能性があります。

解決したい問題がわからないと、より詳細なアドバイスをすることは困難です。なんらかの形式のユーザー認証が必要な場合は、htaccess-mechanism を探してください。それ以外の場合は、ブラウザによって呼び出されたときにすべての処理を行う php-script を記述します。このスクリプトは、終了時に別のページにリダイレクトすることもあります。

于 2012-06-17T09:12:31.007 に答える