2010-03-01 11 views
12

अपाचे 2.2 और PHP 5 का उपयोग करना, .php एक्सटेंशन के बिना PHP चलाने का सबसे अच्छा तरीका क्या है। उदाहरण के लिए, मैं एक स्क्रिप्ट कहा जाता app.php है और मैं के रूप मेंmod_rewrite का उपयोग किए बिना एक्सटेंशन के बिना PHP चल रहा है?

http://example.com/app

यह आह्वान करने के लिए कृपया ध्यान दें कि मैं अभी भी फाइल करने के लिए .php विस्तार रखना चाहता हूँ और मैं mod_rewrite की जरूरत नहीं है की तरह है। Index.php का उपयोग नहीं करना चाहते हैं क्योंकि इसे बहुत अधिक निर्देशिका की आवश्यकता है।

मैं

AddHandler server-parsed .php 
SetHandler application/x-httpd-php 
AddHandler application/x-httpd-php .php 

पेज इस का उपयोग करके थोड़ी धीमी चलाता है मेरी .htaccess को यह जोड़कर एक ही रास्ता मिल जाए, किया था। मुझे संदेह है कि यह प्रत्येक PHP पृष्ठ पर एसएसआई का आह्वान करता है। आश्चर्य है कि इसे पूरा करने के कोई बेहतर तरीके हैं।

+0

मैं इस एक '' निर्देश का उपयोग किया देखा है, लेकिन आप बहुत कम है कि एक साझा में चल हासिल कर सकते हैं मुझे लगता है कि 'mod_rewrite' से पर्यावरण। –

+2

व्यक्तिगत रूप से, मैं सिर्फ "अपमानजनक प्रदर्शन" और "मैं हूं" उसे सब कुछ मिल गया है, कैप्टन! " जब तक वे mod_rewrite स्थापित नहीं किया। – Xorlev

उत्तर

25

एक विकल्प content negotiation का उपयोग करना है। multiviews को चालू करें: एक नामित संसाधन मौजूद नहीं है

Options +MultiViews 

हैं, अपाचे फ़ाइल के लिए glob करेंगे, तब तरह मीडिया प्रकार और सामग्री एन्कोडिंग आवश्यकताओं ब्राउज़र द्वारा भेजने पर आधारित है। अगर केवल एक फ़ाइल (आपकी PHP स्क्रिप्ट) है, तो यूआरएल यही हल करता है।

+0

यह पता चला है कि सभी सर्वरों पर mod_negotiation स्थापित है। तो यह अब तक का सबसे अच्छा समाधान है। ऐसा करने से कोई उल्लेखनीय प्रदर्शन अंतर नहीं है। धन्यवाद! –

+2

यह अभी भी प्रासंगिक है, और आप "/ etc/apache2/mods सक्षम/माइम " AddType आवेदन/x-httpd-php .php .phtml .html .htm " को जोड़ना पड़ सकता है .conf: " – mckenzm

+1

@mckenzm: .html और .htm फ़ाइलों को PHP के रूप में व्याख्या नहीं किया जाना चाहिए। 'AddType' का उपयोग केवल एमआईएमई प्रकार के संसाधन को सेट करने के लिए किया जाना चाहिए, न कि हैंडलर। इसके लिए, 'एडहैंडलर' है (जो तब भी काम करता है जब PHP सीजीआई के माध्यम से चलाया जाता है)। – outis

-1

संक्षिप्त उत्तर यह है कि आप इस तरह से ऐसा करने में सक्षम नहीं होंगे। फ़ाइलों को निष्पादित करने के लिए PHP को कुछ एक्सटेंशन की आवश्यकता होगी ताकि आप इसे * .php के रूप में छोड़ सकें।

जब तक आप mod_rewrite का उपयोग नहीं करते हैं, तो आपको पूर्ण फ़ाइल और एक्सटेंशन का उपयोग करके फ़ाइलों को कॉल करना होगा।

यह mod_rewrite की सुंदरता है - यह आपको ऐसी चीज करने देता है।

मैं आपको प्रश्न वापस कर दूंगा - आप mod_rewrite का उपयोग क्यों नहीं कर सकते? क्या यह एक पर्यावरण मुद्दा है, एक विकल्प, क्या आप लाइटटैड (लाइटी) का उपयोग कर रहे हैं?

एक्सटेंशन

कुछ इस तरह में आपका रीराइट नियम लपेटें यह उड़ा से रखने के लिए करता है, तो सर्वर mod_rewrite का समर्थन नहीं करता:

<IfModule mod_rewrite.c> 
// DO REWREITE HERE 
</IfModule> 

आपको लगता है कि यह एक सुरक्षा चिंता का विषय हैं या कुछ समान रूप से मान्य है तो आप निम्न जांच भी कर सकते हैं और उन्हें कस्टम 404 या यहां तक ​​कि अपने दस्तावेज़ों को भेज सकते हैं और उन्हें mod_rewrite को सक्षम करने और आवश्यकता की व्याख्या करने के उदाहरण दे सकते हैं। यह दूसरा चेक वैकल्पिक है - अगर आप नहीं करते हैं इसका उपयोग नहीं करेंगे उपयोगकर्ता केवल .php एक्सटेंशन bu देखेंगे आपके पृष्ठों को अभी भी काम करना चाहिए।

<IfModule !mod_rewrite.c> 
    ErrorDocument 404 /application/errors/404.php 
    // ERROR 404 ABOVE OR DO ANOTHER DIRECT REDIRECT TO AN INFORMATION PAGE 
</IfModule> 
+0

किसी कारण से, mod_rewrite साइट पर चल रहे कुछ सर्वरों पर स्थापित नहीं है। मुझे पहले से ही विस्तार के बिना काम मिल गया है।बस आश्चर्य है कि क्या कोई तेज तरीका है जो एसएसआई का सहारा नहीं लेता है। –

+0

@ZZ कोडर - किसी के पास आपके लिए कुछ जादू हो सकती है, लेकिन मुझे शक है - मैंने पहले इस बात की कोशिश की है और कभी भी एक वैध समाधान नहीं मिला है। क्या लोगों को सिर्फ यह जानने के लिए व्यवहार्य है कि यदि उनका सर्वर mod_rewrite का समर्थन नहीं करता है तो वे PHP एक्सटेंशन देखने जा रहे हैं? Mod_rewrite सक्षम नहीं होने पर उड़ने से htaccess को रखने के तरीके के लिए मेरे संपादन को देखें। इस तरह वर्डप्रेस काम की तरह चीजें हैं और यह उनके लिए अच्छा है। – Shane

7

आप भी अपनी .htaccess में एक विशिष्ट फ़ाइल के माइम प्रकार के लिए मजबूर कर सकता है:

<Files app> 
ForceType application/x-httpd-php 
</Files> 
+0

इसे और अधिक अपवित्र की आवश्यकता है। –

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