Perl cgiスクリプトに投稿するいくつかのビューを持つRails 4アプリがあります。 Perlスクリプトには、「cgi-bin」というフォルダーへのシンボリックリンクを介してアクセスします。シンボリックリンクからPerlスクリプトに移動すると、実行されるのではなくテキストとしてレンダリングされます(つまり、localhost:3000/cgi-bin/test.cgi)が、直接アクセスすると、問題なく実行されます(つまり、localhost/path/to/cgi-bin/test.cgi)。
OS XでApache2を使用しています。ディレクトリlocalhost/path/to /に、次を含む.htaccessファイルがあります。
# General Apache options
AddHandler fastcgi-script .fcgi
AddHandler cgi-script .cgi
Options +FollowSymLinks +ExecCGI
Localhost:3000 /にある.htaccessファイルにまったく同じ行があります
また、httpd.confのAllowOverrideをすべてコメント解除しました。
Apacheのエラーログにエラーはありません。 test.cgiへの直接リンクにアクセスすると、Apacheのアクセスログに新しい行が追加されます。シンボリックリンクを介してスクリプトにアクセスすると(テキストとしてレンダリングされます)、アクセスログに行が追加されません。
このエラーが発生する理由は何ですか?このセットアップは、OS XのRailsの以前のバージョンでは正常に機能しましたが、最近、Mavericksにアップグレードし、Railsアプリケーションもv4.0に更新する必要があると考えました。
更新-もう少しデバッグしましたが、htaccessファイル内のディレクティブが尊重されていないことがわかりました。認証をhtaccessファイルに追加したとき、ディレクトリ内のhtmlファイルにアクセスできましたが、リダイレクトルールを追加したとき、リダイレクトされませんでした。どうすればいいのかわかりませんが、これは私が修正する必要がある問題のようです。
最近、RailsセットアップをApacheを使用するPassengerに切り替えることで、この問題を解決しました。これで、PerlスクリプトとRailsサイトの両方がApacheを介して実行されます。これには、現在.htaccessファイルが受け入れられるという付加価値があり、問題なくPerlスクリプトを実行できます。
私が解決する必要がある他のいくつかの許可の問題がありましたが、すべては今機能します。次の2つの投稿で、この問題をどのように解決したかについて詳細に説明しました。