質問

今回が初めてZend Framework.いを実施するノウハウゼンドの枠組みを共有ホスティングでは、zend frameworkのフォルダ構成 すべてのビューファイルの"公共"フォルダにまとめた。

"/"がメインのルートフォルダにさせていただくことは公共のような "公共"

このurlが"http://site/public/....bla bla..."

すが、いかがでしょうか?

やはりその他の方法は?

って許可をバーチャルホスト.

でどうする?

いようお願いいたしますか私の質問です。ない場合はお尋ねください。

感謝です。

役に立ちましたか?

解決

私は最善の方法は、パブリックディレクトリ(Zend Frameworkのディレクトリ構造)からの.htaccessを削除し、あなたの「ルート」ディレクトリに以下の内容でそれを置くことだと思います:

タグ
 
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]

他のヒント

これは(それが/../公開されている)あなたのベースパスの下にファイルをインクルード.htacces

RewriteEngine On

# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]

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]

そして、それがあったpublcディレクトリの下にあった.htaccessファイルを残します。

あなたのベースパス(私は上記の投稿1)下の2つの.htaccessファイル、パブリックディレクトリの下の1(Zend Frameworkのドキュメントから通常の1)と第二のものを持っていますので。

あなたのアドレスがyourdomain.com/となりますので、

あなたは、ホスト内のwwwフォルダにプロジェクトの公開フォルダを配置する必要があります。 こうしたライブラリ、アプリケーションなどのソースコードフォルダがない...その中に、WWWフォルダと同じレベルの場所でなければなりません。この方法は、サイトのセキュリティを推進していきます。

実際には、共有ホスティングにZend Frameworkのアプリケーションを実行するための最良のideadではありません。私は実際に仮想プライベートホスティング(VPS)を得ることをお勧めします。 Zend Frameworkのと他のフレームワークすでにインストールされ、定期的に更新してそこに非常に良いと安価なhostingsがあります。私は servergrove の上だし、それは今のところ素晴らしいされています!

しかし、これはあなたがそれを共有ホスティング上で動作させることができないことを意味するものではありません。あなただけではなく.htacessと仕事をしなければなりません。あなたのWebルートに、パブリックフォルダの内容を入れて、bootstrap.phpの中で、あなたのパスを調整し、他のすべてのフォルダをすることはできません直接アクセスして、あなたのindex.phpを通過すべてをルーティングする通常のZFのアプローチを使用してください。

ArneRieからの答えは私のために動作しませんでしたし、私は最終的にロレンツォアルバートソンズ・ソリューションのrel="nofollow">

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]

実際に私はそれを検索し(ここではSO上それらのほとんど)の回答をたくさん見つけましたが、それらのどれも私のために働いていないきました。だから私は最終的に解決策を見つけた - ルートディレクトリ上の.htaccessます:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php
http://framework.zend.comから

この1 /ウィキ/表示/ ZFDEV / +あなた+のURL +リライタに設定 ルートディレクトリ上のindex.phpます:

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';
?>
http://akrabat.com/から

この1 Zendのフレームワーク/ Zendのフレームワーク・オン・共有ホスト/ の フォーラムのようなほど - そしてそれは他のプロジェクトのディレクトリがルートフォルダにある場合でも、私のために動作します。 それが誰かの役に立つかもしれないと思った:)

また、ロブ・アレンは良い解決策を書いた

私はを使用していますのZend Frameworkの2、それが私のために働きました。 私は、上記のリンクからのの "参照公共対向ファイル" の部分を行っていないAlghoughます。

私はちょうどからの私の layout.phtml の中のコードを変更しました

$basePath = $this->basePath();

$basePath = $this->basePath();
if (defined('RUNNING_FROM_ROOT')) {
    $basePath .= 'public/';
}

私は同じような状況にしてきたと「SRC」のような公共の下のフォルダの下のZendのライブラリを入れている - と.htaccessすべてから拒否を使用しています。あなたはカップルのパスを両立させる必要があるでしょうが、それは正常に動作します。

。 。 。どのようにMagentoのは、Zendのフレームワークを使用しています?私はXAMPPを使用していると私は、php.ini、http.confにも仮想ホストを変更せずにローカルMagentoのをインストールしました。

またこの問題は最近、このスレッドができた問題の解決を図ります。を使用していzf2.だいたいのzend関連ファイルディレクトリまでの名言 src.このディレクトリに存在する公共またはルートディレクトリなどの /www)

  1. 作成。htaccessファイルの'src'dirを追加し否定からすべての方向性を指し示します.

  2. のインデックスファイルの作業ディレクトリに src フォルダるには、次のように:

    define('SRC_ROOT', 'src');
    chdir(SRC_ROOT);
    

---とくと思います!

バーチャルホストを設定すると、通常のhttpd.confや余分な/のhttpd-vhosts.conf内で行われます。あなたはHTTPD-vhosts.confを使用している場合は、このファイルはあなたのメインのhttpd.confファイルに含まれていることを確認。一部のLinuxディストリビューション(例:Ubuntuの)パッケージのApacheので、その設定ファイルは/ etc / apache2の中に保存されたフォルダは/ etc / apache2の/サイト対応の内部の仮想ホストごとに1つのファイルを作成しています。この場合、あなたは、ファイル/ etc / apache2の/サイト対応/ ZF2-チュートリアルに以下の仮想ホストのブロックを置きます。

NameVirtualHostでは定義さに設定されていることを確認し、「* 80」又は類似し、次いでこれらの線に沿って仮想ホストを定義します。

Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file. Some Linux distributions (ex: Ubuntu) package Apache so that configuration files are stored in /etc/apache2 and create one file per virtual host inside folder /etc/apache2/sites-enabled. In this case, you would place the virtual host block below into the file /etc/apache2/sites-enabled/zf2-tutorial.

Ensure that NameVirtualHost is defined and set to “*:80” or similar, and then define a virtual host along these lines:

 <VirtualHost *:80>
     ServerName zf2-tutorial.localhost
     DocumentRoot /path/to/zf2-tutorial/public
     SetEnv APPLICATION_ENV "development"
     <Directory /path/to/zf2-tutorial/public>
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
 </VirtualHost>

Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1.

ZF2-tutorial.localhostが127.0.0.1にマップされるように

ETC \ hostsファイル\ \ WINDOWS \ SYSTEM32 \ドライバー:。

あなたは/ etc / hostsファイルまたはcを更新していることを確認してください

私は、最も単純にお勧め:(さらに良い - 常にPUBLIC_PATH定義 - あなたのindex.phpにdirname(__FILE__);をし、この定数への相対リンクを作る)index.phpのは、あなたのルートにある方法でアプリを開発します。アプリケーションとライブラリフォルダと一緒に。あなたは簡単に.htaccessでdeny from allを使用して外部からそれらをアクセス不能にすることができます。

あなたの公開が公開されていないとき、

PUBLIC_PATH定数も役立ちます。 (私の場合は、公開HTMLまたは公開/ HTML / WWW())

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top