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”,然后重新加载 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 回答