Apache Alias設定下でのRewrite
<Virtualhost *:80>
ServerName example.com
DocumentRoot /var/www/docroot
Alias /alias/ /var/www/alias/
</Virtualhost>
という設定のApacheなwebサーバにて、
.htaccessの中でRewriteを使用する際の注意事項。
例えば
#/var/www/alias/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
上記のように.htaccessが設定されていると、http://example.com/alias/ へのリクエストは、
内部的にDocumentRoot側へリダイレクトされる。
(URIの /alias/ が /var/www/alias/index.php に書き換えられる。
/var/〜はAlias設定にマッチしないので、DocumentRootへのアクセスとして処理される)
解決方法
#/var/www/alias/.htaccess
RewriteEngine On
RewriteBase /alias
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
というように、RewriteRuleを書く.htaccessにRewriteBaseを設定すれば
http://example.com/alias/ で /var/www/alias/index.php にアクセスできます。