【问题标题】:.htaccess redirect to subdirectory for Ruby application deployed by passenger.htaccess 重定向到乘客部署的 Ruby 应用程序的子目录
【发布时间】:2014-04-13 18:51:34
【问题描述】:

我的 Ruby on Rails 项目位于 justhost 服务器上。当我在那里创建 ruby​​ 项目时,它默认在文件夹 rails_apps 中创建它。
对于我的项目,我创建了符号链接。
ln -s ~/rails_apps/webworth/public ~/public_html/webworth
ln -s ~/rails_apps/webworth ~/public_html/webworth_app [此符号链接的目的仅用于通过 ftp 客户端浏览文件]

我在 ~/rails_apps/webworth/public 目录中创建了 .htaccess 文件。下面是.htaccess 代码

Options -MultiViews  
PassengerResolveSymlinksInDocumentRoot on  
RailsEnv development  
RailsBaseURI /webworth  
SetEnv GEM_HOME /home5/worthgur/ruby/gems  

和一个在 ~/public_html 中的 .htaccess 文件。下面是代码:

# Use PHP5 Single php.ini as default  
AddHandler application/x-httpd-php5s .php  

RewriteEngine on  
Options +SymLinksIfOwnerMatch  
RewriteBase /  

RewriteCond %{HTTP_HOST} ^(www\.)?webworth.com [NC]  
RewriteCond %{REQUEST_URI} !webworth/ [NC]  
RewriteRule ^(.*)$ "webworth\/$1" [L]

除了一个问题外,这些 .htaccess 文件结构一切正常。额外的文本附加到我的项目中的所有 url,即由 routes.rb 文件生成的所有链接的“webworth”。我想从所有 URL 中删除这个额外的文本“webworth”。

Now urls are generating for example in this manner.
http://webworth.com/webworth/tags/smartphones
while it should be http://webworth.com/tags/smartphones.

这个额外的文本,即“webworth”之前是为必须访问的文件夹添加的,因为它不在站点的文档根目录中,并且由于这个额外的文本,额外的文本会附加到路由生成的所有 URL。 rb 文件通过 ~/rails_apps/webworth/public/.htaccess 文件 [原因:RailsBaseURI /webworth]

我想这可以通过在 ~/rails_apps/ 中将 RailsBaseURI /webworth 更改为 RailsBaseURI / 来解决webworth/public/.htaccess 文件。
我这样做了,我确信我无法在 ~/public_html/.htaccess 文件中编写正确的命令,以便我可以将流量从 public_html 重定向到我网站的符号链接(webworth)。我使用了很多选项,但无法弄清楚它是如何工作的。请帮助正确编写 ~/public_html/.htaccess 文件以将流量从 public_html 文件夹重定向到我的符号链接(webworth)。
Justhost 建议此链接:How to host the Primary Domain from a subfolder。但我仍然无法弄清楚这个问题。谢谢

【问题讨论】:

    标签: ruby .htaccess redirect passenger


    【解决方案1】:

    我在 justhost 上遇到了同样的问题,我在没有添加任何重定向的情况下解决了它。 我将我的 Rails 应用程序公用文件夹设置为主站点公用文件夹。

    • 我将原来的“public_html”重命名为“public_html_backup”,以防万一。

    • 添加了符号链接ln -s ~/myRailsApp/public ~/public_html

    • 在我的 htaccess 中,我将 RailsBaseURI /myRailsApp 更改为 RailsBaseURI /,导致:

    <IfModule mod_passenger.c> Options -MultiViews PassengerResolveSymlinksInDocumentRoot on RailsEnv production RackBaseURI / SetEnv GEM_HOME /yourUserPath.../ruby/gems </IfModule>

    我希望这可以帮助你。 干杯

    【讨论】:

    • 这不会阻止您拥有子域和测试环境,否则它们会在 public_html 文件夹中包含符号链接?
    猜你喜欢
    • 1970-01-01
    • 2015-08-24
    • 2018-12-19
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多