2010-12-15 59 views
1

j'ai une barre oblique à la fin de tous les urls dans mon site:cache Rails et Nginx rewrite

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

Voici ma Nginx règle de réécriture:

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

Son ne fonctionne pas parce que le 1 $ vient avec la barre oblique ... quelqu'un pourrait m'aider avec cette regex?

Merci.

Répondre

0

essayez de déplacer la barre oblique en dehors de votre parenthèse afin qu'il ne sera pas inclus dans 1

^(.*)\/$ 

$ si cela ne fonctionne pas, correspondre à tous les caractères non-slash puis une barre oblique omble chevalier

^([^\/]*)\/$ 
+0

dans les deux regex, ** 1 $ ** est livré avec la barre oblique –

0

Je résolu le problème avec ce hack

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)