2010-09-24 8 views
10

मैं .htaccess फ़ाइलों का उपयोग किए बिना एक mod_rewrite नियम कॉन्फ़िगर करना चाहता हूं। जब मैं .htaccess फ़ाइलों में नियम डालता हूं तो वे ठीक काम करते हैं, लेकिन मैं अपने/etc/apache2/साइट्स-उपलब्ध/[साइट नाम] कॉन्फ़िगरेशन फ़ाइल में सभी कॉन्फ़िगरेशन छोड़ना पसंद करूंगा।.htaccess फ़ाइलों का उपयोग किए बिना मैं Apache2 में RewriteRules कहां रखूं?

जब मैं वर्चुअलहोस्ट या निर्देशिका निर्देशों के भीतर एक ही रिवाइट्रूल्स डालता हूं, तो कुछ भी काम नहीं करता है। मैं क्या गलत कर रहा हूं? यहाँ मेरी VirtualHost कॉन्फ़िग फ़ाइल से एक नमूना है:

<Directory /> 
Options FollowSymLinks 
# AllowOverride is on for the .htaccess files to work 
AllowOverride All 
RewriteEngine On 
RewriteRule ^oldsite\.php$ newsite.php 
</Directory> 

मैं मैं apache2.conf फ़ाइल के भीतर कुछ निर्देश की अनदेखी हो सकती है सोच रहा हूँ, लेकिन मैं यकीन नहीं है। मदद। :)

उत्तर

5

आप RewriteRule pattern that is meant for an .htaccess file का उपयोग कर रहे हैं। कारण:

जब .htaccess में रीराइट इंजन का उपयोग कर प्रति-निर्देशिका उपसर्ग (जो हमेशा एक विशिष्ट निर्देशिका के लिए ही है) फ़ाइलें स्वचालित रूप से है पैटर्न मिलान के लिए हटा दिया और स्वचालित रूप से के बाद जोड़ा प्रतिस्थापन किया गया है।

तो पूरा URL पथ के साथ इस नियम का प्रयास करें:

RewriteRule ^/oldsite\.php$ /newsite.php 
+0

आप तेजी से प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। जब मैं इसे निर्देशिका निर्देश में डालता हूं तो यह काम नहीं करेगा, लेकिन मैंने इसे वर्चुअलहोस्ट तक ले जाया और अब यह ठीक काम कर रहा है। कोई विचार क्यों? – wittmaniac

+0

@ user358036: मुझे लगता है कि आपको इसे अपने दस्तावेज़ रूट का वर्णन करने वाले '' अनुभाग में रखना होगा। – Gumbo

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