0

次のようなディレクトリ構造があります。

public_html/
  example.com/
    index.php
    subdir/
      file.jpg

私は共有ホスティングを使用しているため、そのルートにhttp://example.comマップされ、これを変更することはできません。/public_html/この問題を処理するために mod_rewrite ルールを追加しました。

RewriteEngine On
RewriteRule ^$ example\.com/ [L]
RewriteRule (.*) example\.com/$1/ [L]

http://example.com/subdir(末尾の なしで)参照すると、 file.jpg/がリストされますが、その URL は になります。親ディレクトリのリンクは.http://example.com/file.jpghttp://example.com/example.com/

http://example.com/subdir/(末尾に を付けて)を参照すると、 file.jpgが適切な URL: で/一覧表示されます。ただし、親ディレクトリのリンクは.http://example.com/subdir/file.jpghttp://example.com/example.com/subdir/

何が起こっているのか非常に混乱しています。これについて何か助けていただければ幸いです。

/( mod_rewrite ルールの finalhttp://example.com/subdirを削除/すると、バリアントにリダイレクトされhttp://example.com/example.com/subdir/ます。また、リストの親ディレクトリが にhttp://example.com/subdir/変更されhttp://example.com/example.com/ます。これはほぼ正しいです。)

4

1 に答える 1

1

これは、無効になっているDirectorySlashが原因である可能性があります。したがって、それを有効にするか、このルールを使用して mod_rewrite で同じことを行ってください:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .*[^/]$ %{REQUEST_URI}/ [L,R=301]
于 2010-08-08T13:53:45.660 に答える