只有根路由在 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]
我在子文件夹中有一个 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]