0
RewriteEngine on
RewriteRule ^$ http://my-site.com/directory [R=301,L]

これにより、ルートページがにリダイレクトされます

http://my-site.com/directory/

(末尾のスラッシュに注意してください)。

URL を生成するときに .htaccess で末尾のスラッシュを省略するにはどうすればよいですか?

4

1 に答える 1

0

これはdirectory既存のディレクトリであるためです。これは書き換えられた URL ではありません。の代わりに別の単語を使用します。

RewriteEngine on
RewriteRule ^$ /mypath [R=301,L]
RewriteRule ^mypath$ /directory/ [L]

noupe.comからの引用:

サーバー上のファイルシステムは、書き換えられた URL よりも常に優先されます。たとえば、「services」という名前のディレクトリがあり、そのディレクトリ内に「design.html」というファイルがある場合、URL を「http://domain.com/services」にリダイレクトすることはできません。何が起こるかというと、Apache が「services」ディレクトリに入り、書き換えの指示が表示されないということです。

これを修正するには、ディレクトリの名前を変更するだけです (先頭または末尾にアンダースコアを追加するのが簡単な方法です)。

ボーナス:すべてのURLの末尾のスラッシュを削除するには:

RewriteEngine On
RewriteRule ^(.*)/$ $1 [R,301,L]
于 2012-11-21T21:42:50.730 に答える