2

ApacheサーバーでJekyllで生成されたサイトを実行していますが、.htaccessファイルを正しく設定するのに問題があります。Jekyllはindex.htmlファイルを各ページを表すフォルダーに配置するので、私のURLは現在次のようになります。domain.com/foo/

URLから末尾のスラッシュを削除して、以前に設定したものと完全に一致するようにします(また、見た目も良くなると思います)。

現在、私の.htaccessファイルのリワイトを扱うセクションは次のようになっています。

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

Options -Indexes

DirectoryIndex index.xml index.html

ここでアドバイスに従ってみましたが、リダイレクトループに陥ります。

誰かが私を助けることができますか?簡単に言うと、domain.com / fooURLで/fooディレクトリからindex.htmlファイルを表示し、domain.com /foo/とdomain.com/foo/index.htmlでドメインにリダイレクトする必要があります。 com/foo。

4

1 に答える 1

7

これを使用して、スラッシュの追加をオフにできるはずです。

DirectorySlash Off

末尾のスラッシュは、正当な理由で追加されていることに注意してください。ディレクトリ名の末尾にスラッシュを含めると、URLの末尾が「foo / bar /index.html」であるか「foo/bar /」であるかに関係なく、相対URLが同じものを指すようになります。末尾にスラッシュがないと、相対URLは通常のポイントから1レベル上のものを参照します。(例:「baz.jpg」は、「/ foo / bar /baz.jpg」の代わりに「/foo/baz.jpg」をユーザーに提供します。これは、末尾の「バー」が保護されていない場合は削除されるためです。末尾のスラッシュ。)したがって、これを行う場合は、相対URLを避けたいと思うでしょう。

次に、ディレクトリ名を書き直してindex.htmlを返すには、おそらく次のようなことを行うことができます。

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}/index.html -f
RewriteRule ^(.*)$ /$1/index.html [L]

これにより、REQUEST_URI / index.htmlが存在するかどうか、および存在するかどうかが内部リダイレクトを実行するかどうかがチェックされます。

于 2012-06-06T20:14:11.283 に答える