只有根路由在 Sinatra 中使用 Passenger/Apache

Only root route works in Sinatra with Passenger/Apache

我在子文件夹中有一个 sinatra 应用程序 运行 Apache/Passenger,在 .htaccess 文件中包含以下内容

<IfModule mod_passenger.c>
  Options -MultiViews
  Allow from all
  PassengerResolveSymlinksInDocumentRoot on
  RackEnv development
  RackBaseURI /myapp
  PassengerAppRoot /home/username/myapp
  SetEnv GEM_HOME /mypath/ruby/gems
</IfModule>

我的 Sinatra 应用有两条路线

get '/' do
  'Root Request'
end

get '/ok' do
  'Ok Request'
end

我的根路由工作正常,但我的第二条路由从未被调用。我猜它介于 Passenger 和 Apache 配置之间,但我无法弄清楚。

这是 运行 在共享主机上,所以我只能访问我的主目录,而不能访问完整的 Apache 配置。

好的,所以我不得不跳出框框。

问题出在父文件夹(站点的根目录)的 .htacess 文件中,该文件具有如下 mod_rewrite 规则:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q= [L,QSA]

添加我的应用程序文件夹后,一切正常:

RewriteCond %{REQUEST_URI} !^/myapp(.*)$ [NC]