2009-07-01 6 views
1

あなたのZendサイトを変更したときに、例えばfoo.com/からfoo.com/subfolder/に何が起こるかは誰にも分かりますか?ルーティングが中断し、front_controller.setBaseUrl()を正しく使用していないか、または何も影響していないことがわかりました。この問題についてZendのサイトで正式な文書を見つけることができません。サイトをサブフォルダに変更すると、Zend Frameworkルーティングテーブルはどうなりますか?

答えて

3

.htaccessファイルにRewriteBaseパラメータを設定する必要があると考えられます。

と仮定すると、あなたの書き換えルールは次のようになり:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

そして、あなたはsubfolderサブフォルダにあなたのサイトを移動していると仮定するとは、単にRewriteEngine onの下で、あなたの書き換えルールに次の行を追加します。

RewriteBase /subfolder 

あなたの完全な書き換えルールがそうのようになります。

RewriteEngine on 
RewriteBase /subfolder 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

PS:フロントコントローラ/リクエストオブジェクト/ルータは、時間の99%が正しく自動的baseUrlを決定します。試してください明示的に設定します。上記の変更を書き換えルールが機能しない場合、オーバーライドを試みるだけです。

var_dump(Zend_Controller_Front::getInstance()->getBaseUrl()); 
+0

私は古いZendののRewriteRuleを使用していました:

あなたは、任意の時点で決定されたbaseUrlは以下と要求で取得することができますするRewriteRule \(JS | ICO | GIF | JPG |!。 png | css)Rewritebaseを使わなくても$ index.php改善が見られました!すごい仕事! – rasx

0

あなたは必ず設定内のすべてのあなたのset_include_path文に/新規フォルダ/前に付加しておく必要があります。それから、setBaseURlは正しく動作するはずです。

関連する問題