2012-03-09 3 views
9
को तोड़ने के बिना .htaccess के साथ एक्सटेंशन .php निकालें

मैं अपने .htaccess फ़ाइल में निम्नलिखित पुनर्लेखन जो फाइलों से .php विस्तार निकाल देता है, so.com/ को उदाहरण so.com/question.php के लिए परिवर्तित करने के लिए है प्रश्नDirectoryIndex

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

हालांकि यह भी डिफ़ॉल्ट DirectoryIndex व्यवहार, जिसमें सिर्फ निर्देशिका टाइपिंग फ़ोल्डर में इंडेक्स फ़ाइल पर रीडायरेक्ट करेगा, जैसे टूट जाता है so.com/answer प्रदर्शित करता है so.com/answer/index.php

सीधे शब्दों में DirectoryIndex index.php साथ उपरोक्त कोड के संयोजन दोनों परिणाम प्राप्त नहीं करता है।

किसी की मदद मुझे इन दो कार्यों गठबंधन, या जो एक ही परिणाम प्राप्त होगा index.php फ़ाइलों को छोड़ने के लिए कोड, पुनर्लेखन कर सकते हैं?

उत्तर

24

मैं, सोच रहा हूँ तुम सिर्फ यह सत्यापित करने से पहले फिर से लिखने के लिए कर रही है कि फ़ाइल मौजूद है जरूरत है कि जिस तरह से आप 404 और DirectoryIndex व्यवहार छोड़ देंगे बरकरार:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.*)$ $1.php [NC,L] 

(परीक्षण नहीं)

+0

पूरी तरह से काम करता है, धन्यवाद। – ajcw

+0

@ Timothée Groleau अच्छा कोड, क्या होम पेज के लिए 'index.php' को हटाने का कोई विकल्प है? – Muhammed

+0

धन्यवाद संभोग, यह एक आकर्षण की तरह काम करता :) – jycr753

2
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA] 

फ़ाइलें और फ़ोल्डर सत्यापित करें और, रीवाइटबेस/

+1

यह एक एक आंतरिक सर्वर त्रुटि देता है :( – ajcw

+0

अजीब है ... आप पर भी इंजन जोड़ने? :) – Crsr

+0

हाँ, मैं शामिल 'RewriteEngine On' :) – ajcw

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