2011-09-07 15 views
8

は2日間検索していますので、誰かが助けてくれることを望むので、このプロジェクトのmod_rewriteと時間制約の理解が不足しているため、.htaccessのサブディレクトリ 'overriding'の親htaccess

クライアントが正しいクッキーを持っていない場合、ルートのindex.phpへのすべての要求を書き換えることを目指し

。 クライアントが正しいCookieを持っていれば、希望どおりブラウズすることができます。

問題

なwww.mydomain.com/subdir/index.phpのarn'tなどの要求がリダイレクトなって、私のサブディレクトリにhtaccessファイルは、私のルートhtaccessファイルよりも優先を取っています。

マイルートの.htaccess

Options FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_COOKIE} !^.*pass.*$ 
RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.*)$ http://www.mydomain.com/index.php?url=$0 [NC] 

私のサブディレクトリにhtaccessを

RewriteEngine On 
RewriteBase/
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

私は、パスワード保護された領域を作成しようとしている理想的

追加情報すべてのリクエストはindex.phpにルーティングされますパスワードを入力することができ、確認されるとクッキーが作成され、コンテンツおよびサブディレクトリのフリーブラウジングが可能になります。ですから、これを達成するためのよりよい方法があれば教えてください。カスタムログイン、エラー、スプラッシュページが必要なので、私は.htpasswdに行っていません。

また、サブディレクトリ.htaccessはExpressionEngine URLハンドラです。

ありがとうございました。

+0

にかかわらず、あなたがこの問題を解決する方法の、クッキーの存在を確認することは良くありませんセキュリティ。偽装するのは簡単ではなく、クッキー内のデータを検証するのではなく、その存在を確認するだけなので)、あなたの「セキュリティ」システムはバイパスするのが簡単です。 –

+0

@ちょっとした提案ですが、あなたがディレクトリへのアクセスを許可したい場合は、HTTP認証の実装について考えてください:http://uk.php.net/manual/en/features.http-auth.php –

答えて

18

親の.htaccess(親フォルダのhtaccess)から書き換えルールを実行できるようにするには、明示的に許可する必要があります(Apacheは現在の.htaccessの書き換えルールを、書き換えられたURLは同じサブフォルダに残ります)。

あなたはサブフォルダに.htaccessファイルに次の行を追加する必要があります。

RewriteOptions inherit 

Apacheのマニュアル:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions

関連する問題