1

私は CakePHP アプリケーションに取り組んでいます。ホストの public_html ディレクトリにアップロードすると、サブディレクトリが作成されました。

したがって、現在の構造は domain.com/subdircake/ のようになっています。

public_html ルートに .htaccess ファイルを含め、サブディレクトリを指すように webroot フォルダーの index.php を変更しました。

Cakeapp 内のルーティングの問題なのか、.htaccess の設定が間違っているための mod_rewrite の問題なのかはわかりませんが、これはどうなるかということです。

  1. ドメインにアクセスでき、アプリのホームページが表示されます。
  2. リンクは domain.com/action ではなく domain.com/subdircake/action を指しています。
  3. URL を強制的に domain.com/action にするとうまくいきますが、理由がわからないのでストレスがたまります。

だから私はそれがいくつかの書き直しの問題でなければならないと思うが、私には何の手がかりもありません。

誰でもアイデアはありますか?

4

4 に答える 4

5

動作する理由domain.com/actionは、.htaccess ソリューションが効果的だったからです。実際、URL を正しい場所に書き換えています。ただし、CakePHP のルーティング システムは、デフォルトの書き換えスクリプトに加えられた変更を認識しないため、HTML ヘルパーは、.htaccess ファイルを編集しなくても参照する場所を指すリンクを生成します。

頭に浮かぶ最初の解決策は、App.base構成を変更することです。でConfig/bootstrap.php、次の行を追加します。

Configure::write('App.base','/');

そして、それが役立つかどうかを確認してください。ただし、その設定を変更した後、サイトを徹底的にテストすることをお勧めします - 多くの CakePHP 機能がそれを使用しており、予期しない結果になる可能性があります。

于 2013-03-03T22:39:52.727 に答える
0

webrootディレクトリの内容をpublic_htmlフォルダに入れます。

次にindex.php、次の行を(ケーキのアプリディレクトリではなく、webroot / public_htmlで)変更します。

if (!defined('ROOT')) {
    define('ROOT', 'subcakedir');
}

/**
 * The actual directory name for the "app".
 *
 */
if (!defined('APP_DIR')) {
    define('APP_DIR', 'app');
}
于 2013-03-07T14:15:25.177 に答える
0

userdir mod を使用していますか?

その場合、3 cake .htaccess (cake フォルダーのルート、app/ フォルダー、および app/webroot/ フォルダーにあります) を編集し、次のいずれかの行を行の直後に追加する必要がありますRewriteEngine On

#.htaccess :
RewriteBase /~username/

#app/.htaccess :
RewriteBase /~username/app

#app/webroot/.htaccess :
RewriteBase /~username/app/webroot

ユーザー名をユーザー名に置き換えます。ただし、〜を忘れないでください

ケーキフォルダーがサブディレクトリにある場合、それは/~username/subdir/...

于 2013-03-03T22:28:47.007 に答える
0

チアゴ・カンペッツィの答えは完璧に機能します。コーネルでもまったく同じ問題がありまし

Config/bootstrap.php、次の行を追加します。

Configure::write('App.base','/');

まだコメントも投票もできないので、ここに書きました:) ありがとうございます!! 私はこの答えを何時間も探しました!

ちなみに、これは .htaccess の有無にかかわらず機能するため、アプリの新しいバージョンを Web サーバーにアップロードするたびにこれを変更する必要はありません。

于 2013-10-02T08:34:52.410 に答える