2011-12-12 13 views
5

मैं त्रुटियों के लिए कस्टम HTML पृष्ठ दिखाने के लिए .htaccess का उपयोग कर रहा हूं (401, 404, 500 .. आदि)। मैं उन त्रुटियों वाले फ़ोल्डर में सीधे पहुंच प्रतिबंधित करना चाहता हूं जिनमें HTML पृष्ठ शामिल हैं।त्रुटि पृष्ठों पर सीधे पहुंच प्रतिबंधित करें

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain\.com 
RewriteRule \.(html|htm)$ - [F] 

यह वास्तव में काम करने के लिए नहीं प्रतीत होता है और मैं:

a 500 Internal Server Error error was encountered while trying to use an 
ErrorDocument to handle the request. 

क्या परिवर्तन करने के लिए बनाने के लिए है त्रुटियों फ़ोल्डर की .htaccess फाइल के अंदर, मैं निम्नलिखित है काम करने के लिए। htaccess फ़ाइल। मैं यह भी सोच रहा हूं कि क्या यह काम करेगा अगर मैं public_html फ़ोल्डर के बाहर त्रुटियों फ़ोल्डर को चिपकाता हूं?

+0

मुझे 500 त्रुटि –

उत्तर

0

अपनी .htaccess फाइल में काम करता है, एक php फाइल करने के लिए सभी त्रुटियों को अनुप्रेषित

ErrorDocument 403 /errors.php 
ErrorDocument 404 /errors.php 
ErrorDocument 500 /errors.php 
त्रुटियों कस्टम संदेश का पता लगाने और दिखाने के लिए एक अगर किसी और बयान के साथ errors.php उपयोग $ _SERVER [ 'REDIRECT_STATUS'] में

if($_SERVER['REDIRECT_STATUS'] == 403) 
{ 
    die("Forbidden"); 
} 
else if($_SERVER['REDIRECT_STATUS'] == 404) 
{ 
    die("NOT FOUND"); 
} 
else if($_SERVER['REDIRECT_STATUS'] == 500) 
{ 
    die("Server Error"); 
} 
else if($_SERVER['REDIRECT_STATUS'] == 200) 
{ 
// user is trying to directly access the errors page, redirect to index.php 
header("Location: index.php"); 
} 
else 
{ 
    // all other error codes 
} 

यहां एक List of HTTP status codes है। यदि आप जिस त्रुटि को पहचानना चाहते हैं उसके लिए कथन अगर कोई और लिखें। अनदेखा त्रुटियां अन्य ब्लॉक में गिर जाएगी

+2

यदि त्रुटि पृष्ठ को सीधे एक्सेस किया गया है तो '$ _SERVER ['REDIRECT_STATUS'] 'बिल्कुल सेट नहीं किया जा सकता है - यह सर्वर पर निर्भर प्रतीत होता है। (इस मामले में आपका 'अन्य' ब्लॉक न केवल "अन्य सभी त्रुटि कोड" को पकड़ लेगा, बल्कि प्रत्यक्ष पहुंच भी प्राप्त करेगा।) – MrWhite

5

यहाँ आप अपनी .htaccess में क्या रखना चाहिए (अपनी public_html में)

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^(www\.)?mydomain\.com 
RewriteRule \.(html|htm)$ - [F] 

मुझे पता है अगर यह

+0

नहीं मिल रहा है यह वास्तव में परिवर्तन नहीं कर रहा है –

+0

आपके पास आपके .htaccess में अन्य नियम हैं? –

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