2

ApacheサーバーでCakePhpを構成する際に問題が発生しました。それは私の開発環境でうまく機能しました、そして今私は展開しようとしています。

URLは次のようになります。

"http://www.example.com/mysite/"

コントローラのアクションの例は次のとおりです。

"http://www.example.com/mysite/users/login"

デフォルトのhtaccessファイルを使用しても機能しないようです。

mod_rewriteはphpInfoに従ってロードされ、URLを書き換えていますが、/mysite/をコントローラーとして認識します。これが出力と私の.htaccessファイルです

Missing Controller

Error: MysiteController could not be found.

Error: Create the class MysiteController below in file: >app/Controller/MysiteController.php

根:

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

アプリ:

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

webroot:

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

.htaccessファイルまたはCakePhp構成ファイルを変更する必要がありますか?私はいくつかの異なるRewriteBasesを試しましたが、異なるエラーを取得することができました。

編集:サーバーはphp-cgiを実行しており、すべてのリンクがcgi-binに書き込まれているようです。例えば:

$this->Html->meta('icon');

パス「/cgi-bin/cgiwrap/w3u_mysite/mysite/favicon.ico」を書き込みます。これが発生する可能性のある場所または理由について何か考えはありますか?

4

3 に答える 3

3

私の編集で疑われたように、問題はcgiphpを実行しているサーバーに関連していました。問題が何であったかは正確にはわかりませんが、CakePhpgoogleグループがこの解決策を提供しました。

app / Config / core.phpには、App.baseUrlのコメント化された定義があります。コメントを外して、次のように置き換えます

Configure::write('App.baseUrl', '/mysite/');

その上に、無視する必要のある.htaccessファイルを削除するようにというコメントがあります。このサイトは、.htaccessファイルを標準値として正常に機能し、RewriteBaseは必要ありませんでした。1つの厄介な点は$this->Html->css()$this->Html->js()関数が機能しなかったことですが、テンプレートで呼び出すだけなので、ハードコーディングするのはひどいことではありません。

これらのcgiの問題の原因について誰かが洞察を持っている場合は、共有してください。すべてのHtmlヘルパーを使用できない場合でも、それはまだ少し恨みのように感じます。

于 2012-04-20T02:46:23.920 に答える
0

.htaccessesに(おそらく'/ mysite'を引用符で囲んだり、2番目のスラッシュを付けずに)追加したいので、Rewritebase /mysite/modrewriteはフォルダーを考慮に入れます。


webroot/index.phpファイルの正しいパスを確認しましたか?最後の手段として、ルート内の「mysite」を除外する可能性がありますか?


最後の提案:あなたの書き直しの前に追加mysite/appてください。

于 2012-04-13T06:23:11.783 に答える
0

一部のサーバーでも同様の問題が発生します。私にとっての解決策は、すべての.htaccessファイルの絶対パスに名前を付けることでした。

何かのようなもの:

根:

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

アプリ:

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

webroot:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)$ /mysite/app/webroot/index.php?/$1 [QSA,L]
</IfModule>
于 2012-04-15T18:43:55.237 に答える