___test
次のようなディレクトリを使用し/___test/subdirectory1/
ていくつかのコンテンツを持ちたいのですが、このパスを URL に表示しないでください。代わりに、URL/demo/subdirectory1
または言うと、ブラウザのURL/demo/subdirectory1/images/image.jpg
を指して/___test/subdirectory1/images/image.jpg
、ブラウザのURLを次のようにしたいと思います/demo/subdirectory1/images/image.jpg
。実際に交換___test
するdemo
時々動作するように見えますが、さまざまな問題で試したことは次のとおりです。
RewriteRule ^demo/subdirectory1(.*) ___test/subdirectory1/$1
上記は: demo/subdirectory1
または demo/subdirectory1/
(既存のコンテンツの例では index.html 内/___test/subdirectory1/
) でのみ機能しdemo/subdirectory1/somethingmore...
ますが、この場合もコンテンツは存在しますが、残念ながら URL に実際のディレクトリ パスが表示されます。
さらに、私は以下を使用して、404 から/___test
URL で始まるものまでを使用しています。
RewriteCond %{THE_REQUEST} ^GET\ /___test/
RewriteRule ^___test/(.*) - [R=404,L,NC]
それは機能しますが、これを追加すると、残念ながら(再び)前のものも404になります。しかし、私にとって最も重要なことは、たとえ 2 番目の作品を作成できなくても、最初の部分を適切に作成することです。
どんな助けでも本当に感謝しています。ありがとう。
編集1:私はまた、内部に以下を追加しようとしました/___test/subdirectory1/.htaccess
Options +FollowSymLinks
RewriteEngine On
RewriteBase /___test/subdirectory1
失敗。
編集 2: うまく動作しませんが、Jon Lin の助けを借りてこれまでに思いついた最高のものは次のとおりです。
RewriteCond %{REQUEST_URI} ^/demo/subdirectory1(.*)
RewriteCond %{DOCUMENT_ROOT}/___test/subdirectory1/%1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/___test/subdirectory1/%1 -d
RewriteRule ^ /___test/subdirectory1/%1 [L]
/demo/subdirectory1
<-OK
/demo/subdirectory1/
<-OK
/demo/subdirectory1/subdirectory2
<- 実際のパスを公開
/demo/subdirectory1/subdirectory2/
<-OK
/demo/subdirectory1/subdirectory2/subdirectory3
<- 実際のパスを公開
/demo/subdirectory1/subdirectory2/subdirectory3/
<-OK
ご覧のとおり、より深いレベルsubdirectory1
に問題があります。理由がわかりません。Linux apache のサイトのルートに存在するクリーンな .htaccess ファイル (他に深いものはありません) でこれをテストします。