私は奇妙なapache mod_rewriteの問題があります。ユーザーからサブディレクトリを隠す必要がありますが、すべての要求をそのサブディレクトリにリダイレクトする必要があります。私はstackoverflowに関するいくつかの非常に似た問題を発見しましたが、実際には何も合わないので、私は新しい質問を投稿することにしました。フォルダを隠すルールを書き直し、後ろにスラッシュを入れずに正しく機能しない
私の.htaccessファイルは次のようになります。
RewriteEngine On RewriteBase/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.*)?$ foo/$1 [QSA,L]
ドキュメントルートは次のフォルダ/ファイルが含まれています。
/foo/bar/index.html
私は今、そのexample.com/barと例を期待します。 com/bar /はindex.htmlの内容を表示します。予想通り
代わりexample.com/bar/私のコンテンツを示すがexample.com/bar内容を示し、次いでexample.com/bar/foo/ 301を私にリダイレクトします。私は本当にこの場合301リダイレクトがあるのをなぜ知りません。
私はそのルールの上にこの
RewriteCond %{REQUEST_URI} !^[^.]*/$ RewriteCond %{REQUEST_URI} !^[^.]*\.html$ RewriteCond %{REQUEST_URI} !^[^.]*\.php$ RewriteRule ^(.*)$ $1/ [QSA,L]
何かを置く場合は、それが動作しているようですが、それはすべての使用されるファイルの拡張子をリストに私を必要とする...
他の方法私はありますリダイレクトを省略することができますが、フォルダ "bar"は外部ユーザーには見えません。
ありがとうございます!
'^(。*)/?$'は後続のスラッシュを任意にするFYI – zanderwar