Webサーバーにパブリックプロジェクトとプライベートプロジェクトがあります。公開されているものはすべてWebサーバーのルートに入れ、private
ローカルネットワークからのみアクセスできるフォルダーがあります(そこに.htaccessで設定されています)。
すべてのプライベートプロジェクトをprivate
フォルダーに入れてリクエストを自動的に処理したいのですが、URLがwebrootから提供されているように見せたいです。
たとえばprivate/project1
、URL http://example.com/project1を使用してそのフォルダーを提供し、URLを変更したくない場合です。
この単純な書き直し:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ private/$1
動作しますが、私がprivate/project2
別のものを持っているとき.htaccess
:
Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project2/
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Allow asset folders through
RewriteRule ^(assets/.+) - [L]
# Protect files from being viewed
RewriteRule ^(uploads.+) - [F,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Options -Indexes
静的コンテンツは表示されますが、リンクは壊れています。動作させるには何を変更する必要がありますか?
また、を持っていprivate/project3
て参照するhttp://example.com/project3/
場合は問題ありませんが、http://example.com/project3
(末尾の/なしで)参照するhttp://example.com/private/project3/
と、ブラウザのようにURLが表示されます。なんで ?どうすればそれを回避できますか?