2012-07-18 9 views
7

मैं अपने अपाचे vhosts को साफ़ करने की कोशिश कर रहा हूं, क्योंकि मेरे पास 'एलियास की जगह है, और उन्हें सभी को mod_rewrite में डालकर परेशान हो सकता है। हालांकि, जबकि मैं किसी विशिष्ट URL को प्राप्त कर सकते हैं (जैसे http://example.dev/robots.txt, http://example.dev/ अपने आप ही के रूप में, vhost वापस सूचीबद्ध URL (FallbackResource /index.php) तक कम हो जाएगा नहीं।अपाचे 2 (2.2.22 (उबंटू) पर FallbackResource)

vhost एक Zend फ्रेमवर्क परियोजना के लिए एक कंटेनर है, और कोई .htaccess फ़ाइलों सेट कर रहे हैं

पहुँच लॉग .... "GET/HTTP/1.1" 302 0 दिखाता है, लेकिन गूगल क्रोम दिखाया जा रहा है 'कोई डेटा नहीं मिला' और। 'त्रुटि 324 (net :: ERR_EMPTY_RESPONSE): सर्वर कोई डेटा भेजे बिना कनेक्शन बंद कर दिया।'

FallbackResource लाइन पर टिप्पणी करते हुए, और <Location />-आधारित mod_rewrite को पूर्व-सक्षम करने के रूप में पूर्व-कार्य करता है यद्यपि pected।

संपादित करें: वीएचओस्ट में कुछ भी नहीं है जिसे मैं इसे काम करने से रोकने के लिए देख सकता हूं। विशेष एक्सटेंशन वाले फ़ाइल तक पहुंच को रोकने के लिए कुछ Alias लाइनें (जो फ़ॉलबैक रिसोर्स के साथ काम करना चाहिए) और कुछ FilesMatch। लॉग में दिखाई देने वाली एकमात्र चीज 404 है जब यह यूआरएल पर जाने की कोशिश कर रही है, index.php (सूचीबद्ध संसाधन) नहीं।

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 
    ServerAlias www.example.com 

    DocumentRoot /var/website/current/html/ 

    SetEnv APPLICATION_ENV productionbackend 

    # must be most specific first 
    Alias /i/static /var/website/static/i 
    # more /i/* Alias 
    Alias /i  /var/website/current/resources/common-furniture/ 

    # protecting files in the directory. 
    <FilesMatch ".*\.xml"> 
     Order allow,deny 
     Deny from all 
    </FilesMatch> 

    <Directory "/var/website/current/html/"> 
     Options FollowSymLinks All 
     AllowOverride All 
    </Directory> 

    ErrorLog logs/error.log 
    CustomLog logs/access.log common 
</VirtualHost> 
+0

अपाचे त्रुटि लॉग में कुछ भी? – nneonneo

+0

क्या आपके vhost में कोई निर्देश है जो FallbackResource को काम करने से रोक सकता है? कृपया अपने vhost विन्यास का एक बड़ा खंड पोस्ट करें। –

+0

क्या आपने कभी इसे हल किया है? मुझे भी यही तकलीफ़ है। – Marlun

उत्तर

3

मेरे पास एक समाधान है। जैसा कि मैंने मूल प्रश्न पर मेरी टिप्पणी में कहा था, मुझे भी वही समस्या है।

<VirtualHost *:8029> 
    DocumentRoot "C:\path\to\wwwroot" 
    ServerName localhost 
     <Directory /> 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

और अपने htaccess केवल शामिल हैं::

FallbackResource index.html 

मैं अपने .htaccess फाइल करने के लिए DirectoryIndex जोड़ लिया है मेरे vhost अति सरल है। अब यह पढ़ता है:

FallbackResource /index.html 
DirectoryIndex index.html 

इससे समस्या हल हो गई है।

यह क्यों काम करता है?

खाली प्रतिक्रिया केवल तब हुई जब / यूआरएल को दूसरी बार बुलाया गया था और इसे ब्राउज़र द्वारा कैश किया गया था। किसी कारण से, ऐसा लगता है कि FallbackResource इस उदाहरण में विफल रहता है, इसलिए मुझे लगा कि index.html को DirectoryIndex निर्दिष्ट करके सेवा प्रदान की जाती है, तो फ़ॉलबैक की आवश्यकता नहीं होगी। आप इसे एक कामकाज कह सकते हैं।

+2

यह उत्तर कई मोर्चों पर खराब है: सबसे पहले आप '' में 'ऑर्डर ओवरराइड ऑल' सेट कर रहे हैं - इसका मतलब है कि आप केवल उपयोगकर्ता परिभाषित कॉन्फ़िगरेशन को अनुमति नहीं दे रहे हैं, आप httpD को यह भी जांचने के लिए निर्देश दे रहे हैं कि हर जगह । इसमें बहुत अधिक प्रदर्शन और सुरक्षा प्रभाव हैं। फिर, कॉन्फ़िगरेशन तक पूर्ण पहुंच होने के बावजूद, आप अपनी कॉन्फ़िगरेशन के हिस्से को '.htaccess' में डालकर उपयोग कर रहे हैं: मैं दोहराना चाहता हूं कि यह केवल * उपयोगकर्ताओं * के लिए उपयोगी है * * * और * * नहीं है) सर्वर या इसकी कॉन्फ़िगरेशन तक पहुंच। –

+1

ठीक है आप @ इगोरगालीक हैं :) मुझे ध्यान रखना चाहिए था कि यह केवल मेरे देव के रूप में एक देव समाधान है।htaccess' आसानी से वीसीएस के तहत है और मेरी प्रणाली व्यापक 'httpd-vhosts.conf' नहीं है। मैं अपनी कॉन्फ़िगरेशन को वास्तविक तैनाती पर 'httpd-vhosts.conf' में डाल दूंगा। टिप्पणी के लिए धन्यवाद। –

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