2011-04-22 17 views
6

मैं अपने सर्वर पर अपना public_html फ़ोल्डर चाहता हूं जो मेरे ज़ेंड प्रोजेक्ट में सार्वजनिक फ़ोल्डर हो। आप लोगों को कोई विचार है कि मैं यह कैसे कर सकता हूं? अभी मैं domain.com/publicZend_Framework प्रोजेक्ट में सार्वजनिक फ़ोल्डर स्थान बदलें?

मैं इस के लिए index.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(); 

लेकिन यह काम नहीं करता। कोई विचार है कि मैं इसे कैसे तय कर सकता हूं?

मूल रूप से मैं इस तरह एक निर्देशिका संरचना हैं:

public_html/ 
----application/ 
----library/ 
----index.php 

या वहां इस लक्ष्य को हासिल करने के लिए कुछ अन्य तरीका है? मैं वैसे भी अपने यूआरएल से 'सार्वजनिक' चला गया हूं।

कोई विचार?

उत्तर

4

यदि आपका .htaccess सेट अप किया गया है तो आपको लोगों को अपने लाइब्रेरी फ़ोल्डर में आने के बारे में चिंता करने की ज़रूरत नहीं है, सरल पुनर्लेखन नियम इसे रोक सकते हैं।

नीचे क्या Ive मेरी index.php

$path = realpath(dirname(__FILE__)); 
$dirs = array(
     $path . '/library', 
     get_include_path() 
); 
$includes = implode(PATH_SEPARATOR, $dirs); 
set_include_path($includes); 

defined('APPLICATION_PATH') 
     || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/application')); 

defined('APPLICATION_ENV') 
     || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

require_once 'Zend/Application.php'; 

$application = new Zend_Application(
       APPLICATION_ENV, 
       APPLICATION_PATH . '/configs/application.ini' 
); 

पर सार्वजनिक निर्देशिका से छुटकारा पाने के लिए प्रयोग किया जाता है और यह मेरा .htaccess

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
Options -Indexes 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule .* - [L] 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 
RewriteRule \.svn/.* index.php [L] 
RewriteRule ^.*$ index.php [NC,L] 
</IfModule> 
2

यह गलत दृष्टिकोण है! हमारे पास एक सार्वजनिक फ़ोल्डर क्यों है और लगभग हर चीज एक ही स्तर पर है सुरक्षा की वजह है! हम अपने सार्वजनिक फ़ोल्डर में हमारे पुस्तकालयों और आवेदन कोड नहीं चाहते हैं!

केवल एक चीज जिसे आप बदलने की जरूरत है वह है आपका सर्वर (अपाचे) vhost कॉन्फ़िगरेशन ताकि यह आपके सार्वजनिक फ़ोल्डर को दस्तावेज़ रूट के रूप में इंगित कर सके।

<VirtualHost *:80> 
DocumentRoot /path/to/your/public/folder 
ServerName domain.com 
    <Directory path/to/your/public/folder> 
     AllowOverride All 
    </Directory> 
</VirtualHost> 
+0

है मेरे पास कोई उपयोग के साथ एक साझा मेजबान पर हूँ ऐसा करने के लिए। इसके अलावा, इस विशेष मामले में, ज़ेंड एक सबडोमेन पर चल रहा है। जैसे 'sub.domain.com'' sub' 'public_html' फ़ोल्डर के अंदर सिर्फ एक फ़ोल्डर है, इसलिए हर ज़ेंड फ़ोल्डर को' domain.com/application' के माध्यम से एक्सेस किया जा सकता है .. – networkprofile

+0

आवश्यक रूप से मामला नहीं है। जब तक आप फ़ाइल अनुमतियों के साथ htaccess सही सेट अप करते हैं, तो आपको – Ascherer

+0

के बारे में चिंता करने की ज़रूरत नहीं है, यहां तक ​​कि साझा होस्टर्स निजी निर्देशिकाएं प्रदान करते हैं जहां आप कोड डाल सकते हैं। – hakre

1

This post एक बहुत आसान दृष्टिकोण (अनिवार्य रूप से, public को हटाने और एक उप फ़ोल्डर में सभी जेडएफ फ़ाइलों धक्का) से पता चलता है, लेकिन यह भी कई अन्य दृष्टिकोण संदर्भ देता है। ,

RewriteEngine on 
RewriteRule ^.* /public/$0 [L] 
फिर public फ़ोल्डर में

:

विशेष रूप से, कि पोस्ट पर टिप्पणियों का सुझाव है कि आप बस अपने उपडोमेन सभी अनुरोधों को सार्वजनिक फ़ोल्डर में नीचे पुश करने के लिए की जड़ में .htaccess फ़ाइल को संशोधित कर सकते हैं आप मानक .htaccess रखते हैं। सबसे बुरे मामले में, आपको Bootstrap के दौरान, शायद कॉन्फ़िगरेशन के माध्यम से ऐप के baseUrl को भी सेट करना होगा।

+0

मैंने इसे इस तरह से किया, धन्यवाद! – networkprofile

+0

खुशी हुई यह मदद की। चीयर्स! –

संबंधित मुद्दे