سؤال

أنا جديد على الإطار zend. أود أن أعرف كيفية تنفيذ إطار zend على استضافة مشتركة. بسبب بنية مجلد Zend Framework، يتم وضع جميع ملفات الرؤية في المجلد "العام".

افترض

"/" هو مجلد الجذر الرئيسي بالنسبة لي والجمهور مثل "/ عام"

بحيث يصبح عنوان URL "http: // الموقع / العام /. وبعد .. .bla bla ... "

هل هذا صحيح؟

أم أن هناك طريقة أخرى؟

ليس لدي أي إذن لإنشاء مضيف افتراضي.

اذا مالعمل؟

آمل أن تفهم سؤالي. إذا لم يكن كذلك، من فضلك اسألني.

شكرا لك!

هل كانت مفيدة؟

المحلول

أعتقد أن أفضل طريقة هي إزالة .htaccess من دليل الجمهور (بنية دليل Zend Framework)، ووضعه مع المحتوى التالي في دليل "الجذر" الخاص بك:

 
RewriteEngine On

إعادة الترابط ^ .htaccess $ - [f] rewritecond٪ {rebut_uri} = "" إعادة التباين ^. * $ / public/index.php [NC، L

rewritecond٪ {request_uri}! ^ / عام /.إعادة الدخول $ ^ (..

إعادة الناحية الأولى ^ العامة /.* إجمالي / public/index.php [NC، L

نصائح أخرى

قم بتضمين ملف .htacces هذا تحت المسار الأساسي الخاص بك (أي //../Public):

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]

واترك .htaccess الذي كان تحت دليل الشركات حيث كان.

لذلك سيكون لديك ملف 2 .htaccess، واحدة تحت الدليل العام (One العادي من وثائق Zend Framework) والثاني تحت المسار الأساسي الخاص بك (الذي نشرته أعلاه).

يجب أن تضع المجلد العمومي للمشروع إلى مجلد شبكة الاتصالات العالمية في المضيف، بحيث تصبح عنوانك UnickAnd.com/. يجب أن يكون مجلد التعليمات البرمجية المصدر مثل المكتبة، والتطبيقات ... في نفس المستوى مع مجلد WWW، وليس داخله. هذه الطريقة سوف تعزز أمن موقعك

في الواقع ليس هو أفضل IDEAD لتشغيل تطبيقات Zend Framework على استضافة مشتركة. أود أن أوصي حقا بالحصول على استضافة خاصة افتراضية (VPS). هناك عروض جيدة للغاية وغير مكلفة هناك مع إطار Zend وأطرا أخرى مثبتة بالفعل وتحديثها بانتظام. انا على Servergrove. وقد كان رائعا حتى الآن!

ولكن هذا لا يعني أنه لا يمكنك جعلها تعمل على استضافة مشتركة. عليك فقط العمل مع .htacess. ضع محتوى المجلد العمومي في Webroot وضبط مساراتك في bootstrap.php، تأكد من أن جميع المجلدات الأخرى لا يمكن الوصول إليها مباشرة واستخدم نهج ZF المعتاد لتوجيه كل شيء من خلال Index.php.

لم تنجح الجواب من أرنر لي وأخيرا انتهى الأمر باستخدام Lorenzo Albertons Solution.. وبعد آمل أن يكون هذا يساعد الآخرين على الحصول على حل أسرع.

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]

في الواقع لقد بحثت عن ذلك ووجدت الكثير من الإجابات (معظمها هنا على ذلك)، لكن لا شيء منهم يعمل من أجلي. لذلك وجدت أخيرا حل - .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/wiki/display/zfdev/configuring+yourl++Rewriter.و Index.php على الجذر Dir:

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';
?>

هذا واحد من http://akrabat.com/zend-framework/zend-framework-on-a-ashared-host/ويعمل بالنسبة لي حتى لو كان هناك مشروع دير آخر في مجلد الجذر - مثل المنتدى أو نحو ذلك. يعتقد أنه قد يكون من المفيد لشخص ما :)

أيضا Rob Allen كتب حل جيد

أنا استخدم إطار zend 2. وقد عملت بالنسبة لي. alghough لم أفعل ذلك "الرجوع إلى ملفات المواجهة العامة" من أعلى الرابط.

لقد غيرت الكود في بلدي layout.phtml. من:

$basePath = $this->basePath();

ل:

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

لقد كنت في نفس الموقف وقد وضعت مكتبات ZEND تحت مجلد تحت علني مثل "SRC" - واستخدام حرمان .htaccess من الجميع. عليك أن تضغط على مسارات زوجين، لكنها تعمل بشكل جيد.

. وبعد وبعد وبعد كيف يستخدم Magento إطار zend ؟؟ أنا أستخدم xampp وفعلت magento محليا دون تعديل php.ini، http.conf أو المضيف الافتراضي.

واجهت هذه المشكلة مؤخرا ومن خلال هذا الموضوع كنت قادرا على العثور على حل. أنا أستخدم 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 (EX: Ubuntu) حزمة Apache بحيث يتم تخزين ملفات التكوين في / ETC / Apache2 وإنشاء ملف واحد لكل مضيف افتراضي داخل المجلد / إلخ / Apache2 / تمكين المواقع. في هذه الحالة، يمكنك وضع كتلة المضيف الافتراضية أدناه في الملف / ETC / Apache2 / zf2-enabledories.

تأكد من تعريف 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.

تأكد من تحديث / إلخ / المضيفين أو C: Windows System32 Drivers Etc Etc Hosts بحيث يتم تعيين zf2-tutorial.localhost إلى 127.0.0.1.

أقترح أن أبسط: قم بتطوير تطبيقاتك بطريقة حيث يوجد jual.php في الجذر الخاص بك (حتى أفضل - Define Public_Path - dirname(__FILE__); في index.php وجعل الروابط نسبة إلى هذا ثابت). جنبا إلى جنب مع تطبيق المجلدات والمكتبة. يمكنك بسهولة جعلها غير مرئية من الخارج باستخدام deny from all في .htaccess.

يساعد Public_Path ثابت أيضا عندما يكون عامك ليس عاما. (أتش تي أم أل العامة أو / HTML العامة / www (في حالتي))

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top