【问题标题】:Passenger: RailsBaseURI case sensitive?乘客:RailsBaseURI 区分大小写?
【发布时间】:2010-04-30 15:13:24
【问题描述】:

我使用 Passenger 将 RoR 应用程序部署到我域上的子 URI。我面临的问题是子 URI 似乎区分大小写。导航到http://mydomain.com/RailsApp 解决得很好。但是,如果我转到 http://mydomain.com/railsapphttp://mydomain.com/railsApp 或任何其他变体,我会收到 404 错误。如何正确解决这些使用不同大小写的请求?

这是我的 Apache 配置文件:

<VirtualHost *:80>
  ServerName mydomain.com
  ServerAlias www.mydomain.com
  DocumentRoot /www/mydomain/public

  <Directory "/www/mydomain/public">
      RailsEnv "production"
      Order allow,deny
      Allow from all
  </Directory>

  RailsBaseURI /RailsApp
  <Directory "/www/RailsApp/public">
      RailsEnv "development"
      Options -MultiViews
  </Directory>
</VirtualHost>

非常感谢任何帮助。谢谢!

【问题讨论】:

  • URL 根据定义区分大小写,因此在您提出这个问题之前,请确保您有充分的理由让它们不区分大小写。最简单的做法是将文件夹重命名为服务器上的小写版本,但这只会使其以小写形式工作,不会使其不区分大小写
  • @Gareth:原因是用户仍然可以导航到 URL,而不管他们的字母大小写如何。例如,转到stackoverflow.com/Questionsstackoverflow.com/QuEsTiOnS 仍然指向stackoverflow.com/questions

标签: ruby-on-rails passenger


【解决方案1】:

您可以考虑使用 mod_rewrite 并在那里匹配它不区分大小写。

一些帮助您入门的链接 :)
http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.2/misc/rewriteguide.html

【讨论】:

    【解决方案2】:

    感谢ba 为我指明了正确的方向。

    我做了一些研究,发现了mod_speling 模块。这不仅使 URL 不区分大小写,而且还检查拼写错误。

    启用 mod_speling:

    sudo /usr/sbin/a2enmod speling
    
    sudo /etc/init.d/apache2 force-reload
    sudo /etc/init.d/apache2 restart
    

    要使用 mod_speling,请在您的虚拟主机部分中包含指令 CheckSpelling on

    <VirtualHost *:80>
        CheckSpelling on
    
        ...
    </VirtualHost>
    

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 2013-03-06
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      • 2016-11-24
      • 2017-01-07
      相关资源
      最近更新 更多