1

私はRubyistではありませんが、Jekyllが好きで、HerokuやGitと組み合わせて「ブログ対応」サイトを簡単に立ち上げることができます。

Rack-Rewriteを使用して(または、同じことを行うためのより良い方法がある場合は、それを使用して満足しています)、「/foo」を「/foo.html」に書き換えます(つまり、.htmlを追加します)。ただし、ブラウザは変更しません)。ただし、既存のファイルまたはフォルダでない場合に限ります。

前半(つまり、/ fooを/foo.htmlに書き換える)に必要なものだと思いますが、条件付きの「ファイルが存在しない場合」の部分で苦労しています rewrite %r{/(.*)}, '/$1.html'

それが役立つ場合は、IISの下で、次のように同じことを実行しました。

<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

1 に答える 1

4

Rack::Rewrite Githubページを見ると、リライトを行う方法がいくつかあります。ここで推測するだけですが、条件付きリライトよりも任意リライトの方が良いかもしれません。

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

幸運を!

于 2011-08-19T00:00:14.737 に答える