我使用bluehost共享服务器
它应该显示在根域domainname.com
中rails文件位于:
public_html/app_name/current
我的public_html / .htaccess有:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domainname.com$
RewriteCond %{REQUEST_URI} !^/app_name/current/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /app_name/current/public/$1
RewriteCond %{HTTP_HOST} ^(www.)?domainname.com$
RewriteRule ^(/)?$ /app_name/current/public/ [L]
我的public_html / app_name / current / public / .htaccess有:
Allow from all
Options -MultiViews
PassengerResolveSymlinksInDocumentRoot on
RailsEnv production
RackBaseURI /public_html/app_name/current
SetEnv GEM_HOME /home1/username/ruby/gems
答案 0 :(得分:1)
PassengerAppRoot /home1/user/public_html/app_name/current
然后我开始看到一个空白页面并开始在rails日志中显示:
ActionController::RoutingError (No route matches [GET] "/app_name/current/public"):
然后我意识到,好的Rails正在运行,现在它是一个路由问题,但为什么它显示" / app_name / current / public"在日志中因为我没有尝试访问这条路线? 好吧,它在我的public_html / .htaccess中是相同的路径,然后我发现我有所有的系统变量来引用我的public_html / app_name / current / public / .htaccess中的rails路径我必须得到摆脱public_html / .htaccess配置。
所以,我删除了public_html / app_name / current / public / .htaccess文件并将所有内容添加到了public_html / .htaccess中:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?domainname.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^(www.)?domainname.com$
Allow from all
Options -MultiViews
PassengerResolveSymlinksInDocumentRoot on
RailsEnv production
RackBaseURI /public_html/app_name/current
SetEnv GEM_HOME /home1/user/ruby/gems
PassengerAppRoot /home1/user/public_html/app_name/current
然后我遇到了一个问题,我公开/上传的图片没有显示,所以我已添加:
RewriteRule ^uploads/(.*)$ /faux/current/public/uploads/$1 [R=301,NC,L]