【问题标题】:Only root route works in Sinatra with Passenger/Apache只有根路由在 Sinatra 中与Passenger/Apache 一起工作
【发布时间】:2015-03-02 19:55:47
【问题描述】:

我在子文件夹中有一个使用 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

我的根路由工作正常,但我的第二条路由永远不会被调用。我猜测它介于乘客和 Apache 配置之间,但我无法弄清楚。

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

【问题讨论】:

    标签: apache .htaccess sinatra passenger


    【解决方案1】:

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

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

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

    添加具有以下条件的应用程序文件夹后,一切都按预期开始:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-31
      • 2017-07-28
      • 2015-08-13
      • 1970-01-01
      • 2018-02-10
      • 2012-08-17
      • 1970-01-01
      • 2016-10-23
      相关资源
      最近更新 更多