2011-10-25 11 views
2

これはCakePHPの文脈にありますが、私はそれが他のアプリケーションでは一般的だと確信しています。私はこのページの手順を実施し:.htaccess:複数の.htaccessファイルはどのように動作しますか?

http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess

A:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

B:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

C:セクション3において

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

、あります3 .htaccessファイル。わかりやすくするために、A、B、Cと呼んでみましょう。私のサーバー(localhost XAMPP)で動作しているようですが、リダイレクトのパスを理解しているかどうかはわかりません。どんなアドレスを入力しても、それはいつもlocalhost \ cake \ users \ loginに行きます。

私のアプリケーションのルートディレクトリは\ cakeです。私は\ cake、\ cake \ app、cake \ app \ webrootをそれぞれA、B、Cとしています。上記の指示に従うと、cake \ appのコードが実行されます。これは私が望むものです。上記のように.htaccessファイルを正しく設定する前に、\ cakeのコードを実行していました。

の前にが実行される前に誰かがチャイルイングして手伝ってくれますか?任意のPHPファイルですか? cake \ app \ webrootにすべてをリダイレクトしていますか、そこから.htaccessファイルを越えてリダイレクトが設定されていますか? (この場合、cake \ users \ loginに)

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

PS:どのファイルのどの部分がユーザーのログインページへのすべてのHTTP要求にリダイレクトされているのかまだ分かりません。私はこれをもう少し前に設定しました。私はちょうどそれに戻ってきました。私はACLフィーチャーを追加するCakePHP Cookbookページの2番目のチュートリアルに従っていたと思います。

+0

シンプルなトラッキング方法:それぞれの再書き込みのためのURLに余分なクエリパラメータを追加してください: 'RewriteRule ...?url = $ 1&from = fileC' –

+0

マークは、" ... " – musicliftsme

+0

ええ、あなたの書き換えURLの残りの部分です。全部を貼りつけないで怠けているだけです。重要なのは、 '&from = fileC'クエリパラメータを追加することです。 –

答えて

1

誰かがこのアプリケーションがphpファイルを実行する前に取っている「パス」でチャーミングして手伝ってくれますか? cake \ app \ webrootにすべてをリダイレクトしていますか、そこから.htaccessファイルを越えてリダイレクトが設定されていますか? (この場合、cake \ users \ loginに)

要するに、はい。の作業を実行するファイルは.htaccessで、そのファイルは「C」(/app/webroot/.htaccess)です。これにより、既存のファイルやディレクトリ以外のリクエストは、CakePHPをブートストラップしてリクエストを処理するindex.phpに渡されます。それ以上の「リダイレクション」はCakePHP's routingによって処理されます。

編集: は、ログインページにリダイレクトしているものについてのあなたの質問に対処するために、チャンスはあなたがAuth componentを設定していると$this->Auth->allow()経由で任意の「公開」のページを設定していないです。他の2つは、あなたが、例えば、ページを提供するためのApacheで使用されているフォルダにCakePHPのインストールディレクトリまたはアプリケーションディレクトリを置く場合がある


/var/www/htmlまたはそれに類するもの。

/cakephp-1.3.x/.htaccess ( "A")

/cakephp-1.3.x/app/.htaccess ( "B:あなたは構造があることに注意しましょう")

/cakephp-1.3.x/app/webroot/.htaccess (" C」)

したがって、これらのレベルのいずれかですべての要求は、再によって処理されてしまうであろう"C"の中のwriteRule。これは、データベース接続情報などの機密データを保護し、アプリケーションが正常に機能するようにするために行われます(すべて要求はカスタムルーティングを設定していない限りCakePHPブートストラップを経由する必要があります)。

+0

ありがとう、Justin!あなたが正しいです。私はcake \ app \ app_controller.phpにAuthコンポーネントがあり、BeforeFilterはログインページで動作しています。私は明確な説明を感謝します。それは意味をなさない。 – musicliftsme

1

次の行は、すべてをCakeの構造であるインデックスページにリダイレクトします。あなたのケースでは

RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 

、私はあなたのリダイレクトが直接あなたの.htaccessファイルによって引き起こされることはないと思います。あなたのwebroot htaccessは、すべてをあなたのインデックスページにパイプします。

ただし、インデックスページの確認を検討する必要があります。そのページのコントローラーには、おそらく入力引数のデフォルト句があります。したがって、パラメータが不明なURLを入力すると、インデックスページにログイン画面が表示されます。

これは私の2セントです。しかし、私は実験としてCakePHPを使っただけなので、経験が豊富な人は私が間違っていれば私を修正することができます。

+0

入力lunchmeat317をありがとう。上記のようなhtaccess設定がなく、localhost/cakeに行ったとき、設定ファイルの設定がなかった\ cakeディレクトリからファイルを読み込んでいました。例えば正しいものがcake \ app \ database.phpにあるときは、cake \ database.phpを探しました。私はcake \ app \ webroot \ index.phpがすべてのリクエストが現在のA、B、およびCの設定でリダイレクトされるファイルであることを確認します。 – musicliftsme

+0

ええと、私はこのindex.phpファイルをもっと調べます。私はそれを変更したとは思わない(そのままダウンロードして使用する)。 – musicliftsme

1

あなたのアプリケーションでAuthコンポーネントを使用していると思われます。あなたは、authコンポーネントが使用されているcakephpのAclコンポーネント部分を試していると書いています。要求されたコントローラにAuthコンポーネントを含めると、他のloinメソッドが指定されていない場合、cakephpはデフォルトで/ users/loginにリダイレクトされます。だから私はhtaccessはここで問題を引き起こしていないと思います。

+0

あなたはAuthコンポーネントについて正しいです!ありがとうございました! – musicliftsme

関連する問題