如何解决如何使用子目录而不是子域?
| 我正在构建一个我将在domain.com上的Heroku上托管的Rails应用程序。而且我想将WordPress用于phpfog上托管的博客,但我不想使用像blog.domain.com这样的子域。我宁愿使用像domain.com/blog这样的子目录 它与SEO无关...我只是不喜欢子域。子目录更性感(是的...我实际上是这么说的)。 关于如何可靠地完成此操作的任何想法?先谢谢您的帮助。解决方法
您可以使用neezer发现的反向机架代理宝石来做到这一点。首先,您要在Gemfile中添加
gem \"rack-reverse-proxy\",:require => \"rack/reverse_proxy\"
并运行bundle install
。接下来,您将修改config.ru
以将/blog/
路由转发到所需的博客:
require ::File.expand_path(\'../config/environment\',__FILE__)
use Rack::ReverseProxy do
reverse_proxy /^\\/blog(\\/.*)$/,\'http://notch.tumblr.com$1\',opts={:preserve_host => true}
end
run YourAppName::Application
您可能已经有了第一个require语句和run YourAppName...
语句。有几个重要的细节使这项工作。
首先,添加所需的博客URL时,不能在其后加上斜杠。如果这样做,当有人要求http://yourdomain.com/blog/
时,宝石会将其转发给http://you.yourbloghost.com//
,并加上额外的斜线。
其次,如果未启用:preserve_host
选项,则您的博客托管服务器将请求显示为http://yourdomain.com/blog/
而不是http://you.yourbloghost.com
,并返回错误结果。
如果博客使用/absolute/paths/to/images/
,则CSS或图像可能仍然存在问题。
, 我想说,最好的选择是尝试使用Rack中间件进行反向代理(类似于Apache的12英镑)。
Google进行了快速搜索,发现了这个宝石(https://github.com/jaswope/rack-reverse-proxy),但是作者提到它可能尚未投入生产。拥有Rack中间件代理应该可以将您的子域yourdomain.com/blog
转发到另一个网站your-phpfog-account.com/wordpress-installation
。
, 据我所知,如果可以使用重写规则,则无法使用heroku访问Apache配置文件。
如果您选择不使用heroku,则可以随时执行我在下面详细介绍的操作。但是,如果您不使用heroku,则可以轻松地将wordpress提取到/ public / rails文件夹中,然后再次使用重写规则来获取apache处理博客请求。
在您的apache配置中,您需要添加。
RewriteRule ^/blog/?(.*)$ http://somedomain.com/~user/blog/$1 [P,NC,QSA,L]
它将所有请求重定向到/ blog /到另一台服务器。
资料来源:http://www.igvita.com/2007/07/04/integrating-wordpress-and-rails/
, 除了jplewickeless的答案外,我最终编写了自定义的Rack中间件,以替换绝对URL和反向代理端的其他路径。本指南将帮助您开始:
http://railscasts.com/episodes/151-rack-middleware
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。