Кеш Rails и перезапись Nginx - PullRequest
1 голос
/ 15 декабря 2010

У меня есть косая черта в конце всех URL на моем сайте:

Url: http://example.com/help/
Rails chache file: public/cache/help.html

Вот мое правило перезаписи Nginx:

if ($uri ~* ^(.*)/$) {
  if (-f $document_root/cache/$1.html) {
    rewrite (.*) /cache/$1.html break;
  }
}

Это не работает, потому что $ 1 идет с косой чертой ... может кто-нибудь помочь мне с этим регулярным выражением?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2010

Я решил проблему с этим хаком

module PageCachingHack
  class << self
    def included(base)
      base.alias_method_chain :page_cache_file, :trailing_slash
    end
  end

  private
    def page_cache_file_with_trailing_slash(path)
      name = page_cache_file_without_trailing_slash(path)
      name.gsub!('.html', '/index.html') unless name =~ /index\.html/
      return name
    end
end
ActionController::Caching::Pages::ClassMethods.send(:include, PageCachingHack)
0 голосов
/ 15 декабря 2010

попробуйте переместить косую черту за пределы скобки, чтобы она не была включена в $ 1

^(.*)\/$

если это не сработает, сопоставьте все символы без косой черты, тогда один символ косой черты

^([^\/]*)\/$
...