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

时间:2015-03-02 19:55:47

标签: apache .htaccess sinatra passenger

我在一个子文件夹中运行带有Apache / Passenger的sinatra应用程序,其中包含以下.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配置。

1 个答案:

答案 0 :(得分:1)

好的,所以我不得不在盒子外面看。

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

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

使用以下条件添加我的app文件夹后,一切都按预期开始工作:

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