2012-04-17 8 views
0

私はzendアプリケーションをデプロイしたサブドメインを持っていますが、問題はそれがabcというディレクトリを指していて、それをpublicというディレクトリに指し示すように変更できません。 publicディレクトリにリダイレクトされる.htaccessファイルをルートに置くことはできますか?それはできますか?私はそれが パブリックディレクトリへのリダイレクトリクエストzend

私のindex.phpパブリックディレクトリ内の

<?php 

// Define path to application directory 
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); 

// Define application environment 
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(), 
))); 

/** Zend_Application */ 
require_once 'Zend/Application.php'; 



// Create application, bootstrap, and run 
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini' 
); 
$application->bootstrap() 
      ->run(); 

.htaccessパブリックディレクトリ内

を成し遂げることができ、別の方法がある

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

は、現在のディレクトリ構造は

/myroot 
-.settings 
-application 
-docs 
-library 
-public 
-tests 
-.buildpath 
-.proect 
-.zfproject.xml 
のように見えます
+1

シンボリックabc to public? –

+0

@AlexHowanskyは、サブドメイン –

+0

のルートを指しているサーバーが現在mysubdomain/publicを指しているような錯覚を作り出すには、どのように作成することができますか?あなたのWebサーバーの設定に/ path/to/abcがドキュメントルートとして設定されていて、それを変更できない場合は、/ path/to/abc(存在する場合)を削除(または名前変更)して次のようにしてください: 'ln -s/path/to/mysubdomain/public/path/to/abc'これは/ path/to/abcをWebサーバに存在させるようにしますが、それは他の場所にあるあなたのアプリへのポインタに過ぎません。 –

答えて

1

ドメインの設定が正しく行われることを願っています。この設定をお持ちの場合

sub.domain.net --> /myroot 

httpリクエストのベースであるため、その(/ myroot)フォルダに.htaccessが必要です。それはするRewriteCondのすべての要求を見つける必要があり、この

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

でRewriteBaseディレクティブのように見えると最初のRewriteRuleに主に適用されなければなりません。基本的には、すべてのHTTPパス要求に対して相対ルートを設定(書き換え)します。 2番目のRewriteRuleは、ローカルパスであるアプリケーションを最終的に起動します。 (私はこの最後のルールについて間違っていないことを願っています。もしそれがうまく行かない場合は、一般公開せずに試してみることはできませんが、数年前にこのように動作するアプリを持っていました)

+0

エラーはまだそれはhttp://psnm.stuffmeta.comそれを見ることができます私のルートに.htaccessを置く前にエラーが出ていたのですが、なぜホームページがインデックスコントローラに表示されているのか分かりませんでしたが、同じインデックスコントローラの別のアクションにアクセスしようとしたときにエラーが発生します –

+0

あなたのindex.phpが見つかりましたので、ホームページが動作します。他のすべての要求はパスを探しており、パスが存在しないためにエラーが発生します。しかし、RewriteBaseの.htaccess in/myrootはそれを修正する必要があります。 –

+0

私は古い設定を見つけて、何とかそのように働いていました。状況を再現しようとしましたが、私は他の問題に苦しんでいます。何とか最も簡単なルールは機能しません。私は今それを電話するでしょう。 –

2
RewriteEngine On 
RewriteRule ^\.htaccess$ - [F] 
RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 
RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^public/.*$ /public/index.php [NC,L] 

エラーはありませんし、問題はありません..

+0

これは最高の答えです。魅力的な作品! – Myron

関連する問題