2011-03-29 16 views
27

मैं एक साइट के लिए एक छोटे से चाल करना चाहिए! विचार है:.htaccess यूआरएल-पुनर्लेखन करता है, तो फ़ाइल मौजूद नहीं

  • यदि आवश्यक यूआरएल के लिए एक फ़ाइल मौजूद है तो मैं उस यूआरएल पर जाता हूं, और कुछ नहीं कर रहा हूं;
  • अगर एक आवश्यक यूआरएल के लिए एक फ़ाइल मौजूद नहीं है, मैं एक file.php करने के लिए और कुछ करना से जाना चाहिए, लेकिन यूआरएल को बदलने नहीं!

उदाहरण:

www.mysite.com/page1.htm -> मौजूद है -> page1.htm

www.mysite.com/page2.htm फाइल करने के लिए जाना -> नहीं मौजूद है - > लेकिन साथ यूआरएल "www.mysite.com/page2.htm"

यह सब .htaccess से ऐसा करना संभव है default.php फाइल करने के लिए जाना?

+1

इसके अलावा, अपने आप को एक [सार्थक उपयोगकर्ता नाम] (http://tinyurl.com/so-hints) दें। यह करने के लिए एक लाभ यह दूसरों [पर-उत्तर] का उपयोग कर सकते है उनकी टिप्पणी में आप पता करने के लिए (http://meta.stackexchange.com/questions/43019/how-do-comment-replies-work) और आप एक मिल जाएगा अधिसूचना कि किसी ने आपको टिप्पणी में संबोधित किया है। सुझावों के लिए – outis

+0

Thx। मैं हमेशा इस साइट में नहीं हूं। मैं अपनी गलतियों को सही करने की कोशिश करेंगे :) – Kiavor

उत्तर

60
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ /default.php [L] 
5

404 त्रुटि नियम लागू करें।

ErrorDocument 404 /default.php 
+0

यह 'http की तरह php के लिए कॉल आप आराम शैली को खिलवाड़ के बिना एक एचटीएमएल 5 फ़ॉलबैक उपयोग करना चाहते हैं महान भी है: // example.com/app.php/कुछ/resource'। –

+0

मैं वास्तव में इस पर स्विच किया और यह भी बेहतर काम किया! –

+0

यह वही नहीं हो सकता जो आप चाहते हैं। यह ब्राउजर (और Google को) पर एक HTTP 404 स्थिति (फ़ाइल नहीं मिली) हेडर वापस भेज देगा। तो इसे केवल उपयोगी 'फ़ाइल नहीं मिला' पृष्ठ के लिए उपयोग करें। –

8

यहां यह उल्लेख नहीं है, लेकिन FallbackResource नहीं-मिला (404) यूआरएल निपटने की नई सिफारिश तरीका है: mod_rewrite आवश्यकता नहीं है। उदाहरण:

FallbackResource /not-404.php 

से अपाचे मैनुअल:

उपयोग इस हर उस URL को अपने फाइल सिस्टम में कुछ भी करने के लिए नक्शे नहीं है के लिए कोई हैंडलर स्थापित करने के लिए, और नहीं तो वापस होगा HTTP 404 (नहीं मिला)।

+0

महत्वपूर्ण नोट करने के लिए, मैं ने पाया है कि यह कुछ सर्वर साइड संसाधित REST- शैली यूआरएल, जैसे तोड़ सकते हैं: 'http: // example.com/app.php/कुछ/resource'। –

+0

यह सही नहीं है। 'FallbackResource' का व्यवहार' ErrorDocument' जैसा ही होगा। यदि 'PATH_INFO' सक्षम है तो'/app.php/some/resource' बेकार ढंग से काम करता है और मैंने इसे अपने अपाचे पर परीक्षण किया है। – anubhava

+0

PATH_INFO कहां सक्षम है? –

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