2008-10-08 13 views
6

का उपयोग कर .php विस्तार की जरूरत है मैं की तरहसभी प्रश्नों पुनर्लेखन एक mod_rewrite RewriteRule

http://mysite.com/something/otherthing?foo=bar&x=y 

रूप

http://mysite.com/something/otherthing.php?foo=bar&x=y 

दूसरे शब्दों में फिर से लिखा जा करने के लिए सभी तरह की पूछताछ करना चाहते हैं नहीं, बस बनाते हैं। PHP, वैकल्पिक, सार्वभौमिक रूप से।

उत्तर

6

मैं इसे इस तरह से करूँगा। असल में, अगर फ़ाइल मौजूद नहीं है, तो इसे .php जोड़ने का प्रयास करें।

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ $1.php [QSA,L] 
+0

यह वही है जो मैं अब कर रहा हूं। उत्तम। धन्यवाद! – dreeves

+0

तो यह कहता है कि यदि यह एक्सेस किया गया संसाधन फ़ाइल या निर्देशिका नहीं है तो यह रिवाइटरूल करेगा? – bafromca

0

कुछ की तरह ...

RewriteRule /something/(.+)?(.+) /something/$1.php?$2 

शायद काम करेगा।

+0

कि काम करने के लिए प्रतीत नहीं होता। – dreeves

+0

आपको शायद बैकस्लैश –

+0

के साथ प्रश्न चिह्न से बचने की आवश्यकता है मैंने कोशिश की। मुझे लगता है कि क्वेरी स्ट्रिंग सामान सिर्फ रीवाइट्रूल में मेल खाने वाले चीज़ों का हिस्सा नहीं है। आपको क्वेरी स्ट्रिंग पर एक अलग रिवाइटकंड करना होगा। मेरा जवाब देखें – dreeves

1

यह काम करता है:

RewriteCond %{QUERY_STRING} ^.+$ 
RewriteRule ^/?([^/\.]+)$ /$1.php [L] 

विचार वहाँ एक क्वेरी स्ट्रिंग (प्रश्न चिह्न के साथ साथ सामान) है यह सुनिश्चित करना है और यदि ऐसा है तो जांच लें कि क्या प्रश्न चिह्न से पहले सामान कोई एक्सटेंशन है और यदि हां, तो जोड़ देते हैं। php।

1

आप के लिए httpd.conf और क्या बदल सकते हैं, तो आप भी रख सकते हैं:

ForceType application/x-httpd-php 

फ़ाइल में के रूप में यह सभी रास्ते PHP फ़ाइलों होने के लिए कहा जाता है के लिए बाध्य करेगा। मुझे लगता है कि यह क्वेरी स्ट्रिंग के साथ भी काम करता है।

0

से मेल खाता है केवल कोई विस्तार के साथ पथ:

RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php 

संपादित करें: मेरी परीक्षण में, क्वेरी स्ट्रिंग पर स्वचालित रूप से पारित कर दिया जाता है। यदि ऐसा नहीं होता है, तो आप इसके बजाय इसका उपयोग कर सकते हैं:

RewriteCond %{QUERY_STRING} ^(.*)$ 
RewriteRule ^(([^/]+/+)*[^\.]+)$ $1.php?%1 
+0

'[क्यूएसए, एल] 'क्वेरी स्ट्रिंग पास करता है (' एल' का अर्थ है इसके बाद नियमों को संसाधित नहीं करना)। – NateS

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