भले ही VirtualHost में “AllowOverride All” हो।


25

मैं Fedora 13 पर एक LAMP सर्वर चला रहा हूं जो ठीक काम कर रहा है; हालाँकि, मैंने अभी-अभी अपनी वर्तमान साइट के डोकरो फ़ोल्डर में ".htaccess" फ़ाइल जोड़ी है जिसे पूरी तरह से अनदेखा किया जा रहा है।

मैंने इस सहित आधा दर्जन विभिन्न परीक्षणों की कोशिश की है:

RewriteEngine on
RewriteBase /

RewriteRule ^.*$ index.php

लेकिन छवियां और अन्य सभी पृष्ठ ठीक लोड होते हैं, और गैर-मौजूद फाइलें अभी भी 404 हैं। मैंने भी यह कोशिश की:

order deny,allow
deny from all

लेकिन हर पेज अभी भी ठीक लोड होता है। फिर से .htaccess फ़ाइल को केवल 100% अनदेखा किया जाता है।

हमने अपना virtualhost रिकॉर्ड /etc/httpd/conf.d/virtual.conf में डाला। यह इस तरह दिख रहा है:

NameVirtualHost *

<VirtualHost *>
    ServerName              intranet
    DocumentRoot            /var/www/default
    <Directory "/var/www/default">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *>
    ServerName              ourwebsite.com
    DocumentRoot            /var/www/html/ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

और क्या हमारे सर्वर पूरी तरह से .htaccessफ़ाइल IGNORE के कारण हो सकता है ??

संपादित करें:

मैंने बेहतर प्रदर्शन करने के लिए .htaccess फ़ाइल को ऊपर में बदल दिया है कि मेरे परिवर्तनों को अनदेखा किया जा रहा है। ध्यान दें कि मैंने उत्पादन सर्वर पर ठीक उसी .htaccess फ़ाइल की कोशिश की और यह ठीक काम किया।

2 संपादित करें:

ठीक है, मेरे पास नई जानकारी है! बस परीक्षण के प्रयोजनों के लिए, मैं के माध्यम से चला गया और अस्थायी रूप से हर किसी को "AllowOverride" निर्देश को बदल दिया AllowOverride All। मुझे लगा कि बहुत पहले निर्देशिका प्रविष्टि सभी दूसरों पर हावी हो रही है:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

जब मैंने उसे बदल दिया AllowOverride All, मेरी .htaccess फाइलें प्रभावी होने लगीं। यह ऐसा है जैसे AllowOverride Allमेरी कॉन्फिग फाइलों में अन्य सभी निर्देशों को अनदेखा किया जा रहा है!

क्या देता है??

जवाबों:


32

अविश्वसनीय। याद रखें कि मैंने कैसे कहा कि यह एक विकास सर्वर है? हाँ .. अच्छी तरह से यहाँ मेरे आभासी मेजबान प्रविष्टि वास्तव में कैसा दिखता है:

<VirtualHost *>
    ServerName              dev.ourwebsite.com
    DocumentRoot            /var/www/html/dev.ourwebsite.com/docroot
    <Directory "/var/www/html/ourwebsite.com/docroot">
        Options FollowSymLinks
        AllowOverride All

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

तुम्हे दिख रहा हे? वैसे मैंने नहीं किया। मैं भूल गया कि mywebsite.com के बजाय dev.ourwebsite.com पर अपनी "डायरेक्टरी" प्रविष्टि को बदलें - और इससे सारा फर्क पड़ा। मैंने अभी यह मान लिया है कि यदि निर्देशिका मौजूद नहीं थी तो अपाचे ने एक त्रुटि डाली होगी; लेकिन यह केवल DocumentRoot निर्देश पर लागू होता है। मैच-आधारित है - मतलब यह नियम लागू होता है यदि यह आने वाले अनुरोध से मेल खाता है, लेकिन अन्यथा, यह परवाह नहीं करता है यदि आप इसे जादू यूनिकॉर्न पर AllowOverride को बताते हैं।

इसे किसी भी अन्य के लिए एक सबक बनने दें जो देखने में आता है - जब बाकी सभी विफल हो जाते हैं, तो सर्वशक्तिमान टाइपो पर विचार करें।


मैं एक लाख साल में यह कभी नहीं पकड़ा होगा! मैंने डायरेक्टरी पथ में एक टाइपो भी, एक देव परियोजना भी ... मेरी आंखें खोलने के लिए धन्यवाद।
जिलियटेक

मैं भी निर्देशिका भाग में एक टाइपो था। वाकई, यह बहुत निराशाजनक था। यह एक आशीर्वाद था कि मैं इस पर आ गया और इस तथ्य के बारे में पता चला कि मैं सुपर मूर्खतापूर्ण गलतियां कर सकता हूं।
आकाश कुमार शर्मा

मुझे पता है कि यह 7 साल हो गया है, लेकिन मैं बस में पॉप करना चाहता था और कहता हूं कि इस जवाब ने मेरी मदद की। यह उसी प्रकार की बात थी। मैंने एक अलग वर्चुअल होस्ट से निर्देशों की प्रतिलिपि बनाई थी और गलत बिट को बदल दिया था। इस जानकारी को साझा करने के लिए धन्यवाद! सर्फ बुद्धिमानी से।
17

5

वर्चुअलहोस्टेस घोषणा के ऊपर 'httpd.conf' में प्रस्तुत किया गया कोई अन्य "AllowOverride कोई नहीं" देखें। शायद, आपके पास डॉकोरोट में "AllowOverride कोई नहीं" है।


मैं जिस सर्वर के साथ काम कर रहा हूं वह एक विकास सर्वर है, और यह हमारे उत्पादन सर्वर का एक सटीक डुप्लिकेट है। Httpd.conf फाइलें व्यावहारिक रूप से समान हैं। केवल महत्वपूर्ण अंतर यह है कि इस सर्वर पर हमारे "virtual.conf" में कम प्रविष्टियाँ हैं और प्रत्येक साइट के साथ उपसर्ग है dev.। फिर भी उत्पादन सर्वर ठीक काम करता है, .htaccess फाइलें अपेक्षा के अनुरूप ही व्यवहार करती हैं, और विकास सर्वर केवल .htaccess फाइल को पूरी तरह से नजरअंदाज कर देता है।
ब्रायन लेसी

0

तीन अनुमान:

क्या वास्तव में लाइन order deny, allowमें अल्पविराम के बाद एक जगह है .htaccess? अपाचे ऐसा नहीं है। मेरे लिए F13 पर मुझे 500 मिल रहे थे।

क्या आपके पास कोई AccessFileNameनिर्देश है?

यदि आप सेलिनक्स का उपयोग कर रहे हैं तो क्या आपके पास फ़ाइल ( ls -lZ) के लिए सही संदर्भ है ?


मुझे 500 त्रुटियां नहीं मिल रही हैं। .Htaccess फ़ाइल को केवल अनदेखा किया जाता है। और मैंने सत्यापित किया कि मेरे पास वैसे भी जगह नहीं थी। मुझे सेलिनक्स या संदर्भों के बारे में कुछ नहीं पता है, लेकिन मैंने देखा कि कैसे जांच की जाती है और जाहिर है कि यह अक्षम है। जैसा कि AccessFileName, मैं चारों ओर देखूंगा, लेकिन जैसा कि मैंने डेनिस के उत्तर पर अपनी टिप्पणी में कहा था, इन दोनों सर्वरों के लिए अपाचे कॉन्फ़िगरेशन प्रभावी रूप से समान है।
ब्रायन लेसी

मैं भी अंतरिक्ष के साथ मुद्दों था। इसने मुझे पागल कर दिया।
१०:३२ पर ०२

वूप्स, करेक्शन: मेरे http.conf में एक AccessFileName निर्देश है। यह इस प्रकार है:AccessFileName .htaccess
ब्रायन लेसी

0

मैं एक ताजा सर्वर पर था, अंततः एहसास हुआ कि mod-rewrite डिफ़ॉल्ट रूप से सक्षम नहीं था।

ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.