1

別のアプリを保持する必要があるため、Cake (ルートフォルダーアプリ) から第 1 レベルのディレクトリを除外しようとしています。

/ アプリを保持

/development/ はアプリのテスト済みバージョンを保持します

ディレクトリ構造:

パブリック フォルダー

.htaccess [modified]
app
    .htaccess [unmodified]
    webroot
        .htaccess [unmodified]
        index.php [unmodified]
        ...
    ...
lib
    Cake
    ...
development
    app
        webroot
            index.php [dumps $_SERVER for test purposes]

したがって、ルート .htaccess が機能するかどうかをテストするためだけに、私の開発構造にはまだアプリがありません (.htaccesses もありません)。

これは、ルート .htaccess の私の変更です。

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REQUEST_URI} ^/development.*
   RewriteRule (.*) - [L]

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

何が起こるのですか:

/development/ は、開発フォルダーの apache インデックスを示します

/development/app/ は、アプリ フォルダーの Apache インデックスを示します

/development/app/webroot には、ルート アプリが表示されます (開発 URL の一致にもかかわらず、要求はキャプチャされます)。

/development/app/webroot は、私の /development/app/webroot/index.php ファイルを表示する必要がありますよね?

ここで何が欠けているのですか?

4

1 に答える 1

3

これは、私のサーバーの奇妙なバグであることが判明しました。

現在動作する結果.htaccessは次のとおりです。

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REQUEST_URI} !^/development(?:$|/)
   RewriteRule    ^$ app/webroot/    [L]

   RewriteCond %{REQUEST_URI} !^/development(?:$|/)
   RewriteRule    (.*) app/webroot/$1 [L]

</IfModule>

理由は不明ですが、自分のユーザー アカウントに SSH で接続し、コマンド ラインから .htaccess ファイルを編集しても機能しません。

同じファイルを (SFTP 経由で) アップロードすると、正常に動作し始めました。

CentOS (5.9) で cPanel (11.34.1) を使用しています。

別の例: CakePHP インストールで複数のサブフォルダーを「無視」したい場合 は、次のパターンを使用できます。

<IfModule mod_rewrite.c>
   RewriteEngine on

   # /development, /version1.5 and /version1.8 directories
   # they all hold independent apps
   # or completely non-cake-related content

   RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/)
   RewriteRule    ^$ app/webroot/    [L]

   RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/.*)
   RewriteRule    (.*) app/webroot/$1 [L]

</IfModule>

RewriteCond両方の命令が同じであることに注意してください。

于 2013-02-07T18:41:18.357 に答える