1

Apache2にVirtualHostがあります。

<VirtualHost *:80>
   ServerName 127.0.0.1
   ServerAlias localhost
   DocumentRoot /var/www/rocketruby/public
   <Directory /var/www/rocketruby/public>
      AllowOverride all
      Options -MultiViews +ExecCGI
      RewriteEngine On
      RewriteRule ^(.*)$ /redharbor.rbx
   </Directory>
</VirtualHost>

redharbor.rbxがあり、/var/www/rocketruby/publicアクセスモードは0777です。

悲しいことに、私はこのメッセージを受け取ります:

Forbidden

You don't have permission to access /redharbor.rbx on this server.

Apache/2.2.22 (Ubuntu) Server at localhost Port 80

何が悪かったのか、助けてください!

4

1 に答える 1

2

試してみるべきいくつかのアイデア...

以下に示すように、「Order」と「Allow」の 2 行を追加してから、Apache をリロードしてスクリプトにアクセスしてみてください。

<Directory /var/www/rocketruby/public>
  AllowOverride all
  Options -MultiViews +ExecCGI
  RewriteEngine On
  RewriteRule ^(.*)$ /redharbor.rbx
  Order Deny,Allow
  Allow from all
</Directory>

公開ディレクトリは開いていますか? 最後のアクセス文字に「x」を表示したい場合:

$ ls -ld /var/www/rocketruby/public
drwxrwxr-x 4 root root 4096 ...

書き換えを削除してから Apache をリロードすると、スクリプトは機能しますか?

$ wget http://localhost/redharbor.rbx
(or use a web browser)

リライトを削除してから Apache をリロードすると、静的ページにアクセスできますか?

$ cd /var/www/rocketruby/public
$ echo "Hello" > index.html
$ wget http://localhost/index.html
(or use a web browser)

Apache 経由ではなく、コマンド ラインからスクリプトを実行できますか?

$ ruby /var/www/rocketruby/public/redharbor.rbx

Apache conf で Ruby をオンにしましたか?

<IfModule mod_ruby.c>
  RubyRequire apache/ruby-debug
  # Execute *.rbx files as Ruby scripts
  <Files *.rbx>
    Options ExecCGI
    SetHandler ruby-object
    RubyHandler Apache::RubyDebug.instance
  </Files>
</IfModule>

それでも助けが必要な場合は、Apache エラー ログを見て、結果をここに投稿できるかどうかを確認してください。

于 2012-11-10T03:56:10.903 に答える