Apache में mod_rewrite कैसे इनेबल करें?


164

मैंने सिर्फ अपने Ubuntu सिस्टम पर LAMP स्टैक स्थापित किया है।

पुनर्निर्देशन मेरे लिए काम नहीं कर रहा है। मुझे नहीं पता कि इसे कैसे ठीक करना है। क्या कोई मेरी मदद कर सकता है?


3
IMHO यह प्रश्न उबंटू विशिष्ट नहीं है और इसे सर्वर फॉल्ट पर माइग्रेट किया जाना चाहिए ।
पाओलो

2
ओपी ने UBUNTU पर लैंप स्थापित किया। आपको और कितने उबंटू विशिष्ट चाहिए?
वोजॉक्स

1
@ ओवजोव: मैं इस मामले के बारे में नहीं जानता, लेकिन यह तर्क काम नहीं करता। "मैं इस एप्लिकेशन (उबंटू पर) का उपयोग कैसे कर सकता हूं?" ज्यादातर ऑफ-टॉपिक हैं।

23
यह "मैं एप्लिकेशन का उपयोग कैसे कर सकता हूं" नहीं है, लेकिन "उबंटू में एक विशिष्ट सुविधा कैसे सक्षम करें"। उबंटू के तहत अपाचे एक अलग कॉन्फ़िगरेशन लेआउट का उपयोग करता है जिसमें प्रत्येक मॉड्यूल और वर्चुअल होस्ट एक फ़ाइल है /etc/apache2जिसमें और a2*कार्यक्रमों का उपयोग करके इसे सक्षम किया जा सकता है ।
लेकेनस्टेय

आपको वर्णन करना चाहिए कि आपने समस्या को कम करने के लिए क्या किया है, यह
बजे

जवाबों:


238

इसे फिर से लिखने वाले मॉड्यूल को सक्षम करने के लिए, "apache2 enable मॉड्यूल rewrite" चलाएं:

sudo a2enmod rewrite

परिवर्तनों को लागू करने के लिए आपको वेबसर्वर को पुनरारंभ करना होगा:

sudo service apache2 restart

यदि आप .htaccessफ़ाइलों में mod_rewrite का उपयोग करने की योजना बनाते हैं , तो आपको भी .htaccessबदलकर फ़ाइलों के उपयोग को सक्षम AllowOverride Noneकरना होगा AllowOverride FileInfo। डिफ़ॉल्ट वेबसाइट के लिए, संपादित करें /etc/apache2/sites-available/default:

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            # changed from None to FileInfo
            AllowOverride FileInfo
            Order allow,deny
            allow from all
    </Directory>

इस तरह के बदलाव के बाद, आपको अपाचे को फिर से चालू करने की आवश्यकता है।


18
मुझे AllowOverride All
Valentin Despa

धन्यवाद! sudo a2enmod rewriteऔर FileInfoयह मेरे लिए तय किया!
d -_- b

22
मेरे लिए वह फ़ाइल
/etc/apache2/apache2.conf

हां दो बदलावों से समस्या ठीक हो गई।
एडेलिन

यह मेरे लिए काम नहीं कर रहा है। मैंने एक सवाल यहां पोस्ट किया है Askubuntu.com/questions/809619/failing-to-rewrite-url
सुहैल गुप्ता

49

मैं ubuntu 14.04 के बारे में एक विशेष उत्तर (ऊपर दिए गए महान उत्तर के लिए एक अनुवर्ती के रूप में) जोड़ने की हिम्मत करता हूं और .htaccess:

14.04 में, डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल का नाम बदलकर 000-default.conf:

sudo gedit /etc/apache2/sites-available/000-default.conf

फ़ाइल के अंत में निम्नलिखित जोड़ें:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

किसी कारण से, Ubuntu 14.04 और apache2 में रूट को सेट किया गया है /www/html। यदि आप वेबसर्वर रूट को वापस पुराने में बदलना चाहते हैं /www, open 000-default.confऔर बदल सकते हैं

DocumentRoot /var/www/html/

सेवा

DocumentRoot /var/www/

और फिर बेशक यह होना चाहिए

<Directory "/var/www">
    AllowOverride All
</Directory>

1
जानकारी के लिए Thanx! इस / नए तरीके से हम www को फ़ोल्डर के रूप में उपयोग कर सकते हैं जहां हम सभी वेबसाइट डालते हैं, और html स्थानीयहोस्ट के लिए डिफ़ॉल्ट रूप से "वेबसाइट" है। यह महत्वपूर्ण हो सकता है यदि आप दुनिया के लिए खुलने वाले बंदरगाहों के साथ खेल रहे हैं - इस तरह से आपकी लोकलहोस्ट अन्य परियोजनाओं के फ़ोल्डर नहीं देख सकती है।
व्लादिमीर वुकानैक

1
यह मेरे लिए काम नहीं कर रहा है। मैं उपयोग कर रहा हूँ Ubuntu 14.04.4 LTS
सुहैल गुप्ता
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.