2011-08-18 5 views
1

저는 루비스트가 아니지만 지킬과 오히려 쉽게 헬로우 (heloku)와 힘내 (Git)와 함께 "블로그 사용"사이트를 만들 수 있습니다.랙 재 작성을 사용하여 .html을 제거하는 방법 (파일이있는 경우)?

'/ foo'를 '/foo.html'로 다시 작성하려면 Rack-Rewrite를 사용하고 싶습니다 (또는 동일한 작업을 수행하는 것이 더 좋은 경우이를 사용하여 기쁘게 생각합니다) .html을 추가하지만 브라우저는 변경하지 않음). 기존 파일이나 폴더가 아닌 경우에만 가능합니다.

나는rewrite %r{/(.*)}, '/$1.html' 내가 상반기 (/foo.html하는 즉, 다시 작성/foo는)을 위해 필요하다고 생각 하지만, 일부 '파일이 존재하지 않는 경우'나는 조건과 사투를 벌인거야. 도움이된다면

는 IIS에서, 내가 있던 같은 않는 다음과 같은 : 당신이 Rack::Rewrite Github 페이지를 참조하는 경우

<rule name="RewriteHtml"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="{R:1}.html" /> 
</rule> 

답변

4

여기 추측을 복용하지만, 다시 쓰기 작업을 수행하는 여러 가지 방법이있다 당신은 Arbitrary Rewriting을 조건부보다 더 잘 수행 할 수 있습니다.

require "rack/jekyll" 
require "rack/rewrite" 

use Rack::Rewrite do 
    rewrite %r{/(.+)}, lambda {  |match, rack_env| 
     if File.exists?('_site/' + match[1] + '.html') 
      return '/' + match[1] + '.html' 
     else 
      return '/' + match[1] 
     end 
    } 
end 

run Rack::Jekyll.new 

행운을 빈다!

+0

감사합니다. 루비에 덜 겁에 질려 한 걸음 더 나아가 야합니다. –

관련 문제