2015-03-02 50 views
1

我有一个子文件夹与Apache /客运运行在.htaccess文件只有root路线西纳特拉可与乘客/阿帕奇

<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> 

下,我的末日应用程序有两种途径

一西纳特拉的应用
get '/' do 
    'Root Request' 
end 

get '/ok' do 
    'Ok Request' 
end 

我的根路线工作正常,但我的第二条路线永远不会被调用。我猜它是Passenger和Apache配置之间的东西,但我无法弄清楚。

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

回答

1

好吧,所以我不得不在箱子外面看。

的问题是在具有的mod_rewrite规则是这样的父文件夹(站点的根目录)的.htacess文件:

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

加入我的应用程序文件夹下面的条件之后,一切都开始工作如预期的那样:

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