2015-03-02 79 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]