我在一个错误的乘客环境(CentOS,apache)的根级运行一个rails 3应用程序,并且很难让乘客找到一些路线,尽管rake routes
正确地显示了路线。在开发过程中一切正常(即使用rails server
代替apache中的phusion乘客)。
我的应用程序的管理部分带有登录页面。应用程序的主要部分有效,但管理部分下的所有内容都无法访问,因为我得到的是404而不是登录页面(当我禁用登录时,可以访问管理页面)。我的apache配置是
<VirtualHost *:80>
ServerName foo.bar.com
DocumentRoot /var/www/apps/myapp/current/public
<Directory /var/www/apps/myapp/current/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
我的登录过程在管理员控制器中实现为before_filter:
class Admin::AdminController < ApplicationController
# login disabled for testing
before_filter :require_login
def require_login
@current_user ||= User.find_by_id(session[:user_id])
redirect_to admin_login_path unless @current_user
end
end
我的路线档案有
Mpf::Application.routes.draw do
secure_protocol = "https://"
...
namespace "admin" do
...
match "login" => "user_sessions#new", :as => :login, :constraints => { :protocol => secure_protocol }
...
end
...
end
当我运行rake路线时,我得到了
admin_login /admin/login(.:format) {:protocol=>"http://", :action=>"new", :controller=>"admin/user_sessions"}
但是当我尝试访问http://foo.bar.com/admin时,我得到了404并且日志显示
Started GET "/admin/login" for iii.iii.iii.iii at 2011-07-13 07:20:41 -0400
ActionController::RoutingError (No route matches "/admin/login"):
据我所知,它应该起作用......除了事实并非如此。任何帮助将不胜感激!
答案 0 :(得分:0)
您是否尝试使用https://
进行访问?您似乎提供了限制来阻止来自http://
的访问以及您发布的引用http://
的链接。