5

पर कोई क्वेरी स्ट्रिंग कैसे संलग्न करें क्वेरी स्ट्रिंग को कैप्चर करने और इसे त्रुटि दस्तावेज़ (404) में जोड़ने के लिए कोई है। कुछ की तरह:त्रुटि दस्तावेज़

अनुरोधित पेज:

http://www.example.com/sdsdsd 

रीडायरेक्ट करने के लिए:

http://www.example.com/404.php?pg-name=sdsdsd 

उत्तर

1

के बजाय इनको विन्यास में ErrorDocument का उपयोग कर, आप इस तरह error.php एक असली रीडायरेक्ट मजबूर कर सकते हैं:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /error.php?pg-name=%{REQUEST_FILENAME} [L] 

स्रोत: How to get `$_POST` query when 404 redirected through .htaccess?

error.php पेज आप तो जांच कर सकते हैं, अगर स्नातकोत्तर नाम पैरामीटर error.php को दिया जाता है में:

echo '<pre>'; 
print_r($_GET); 
echo '</pre>'; 

यदि आप आप इस तरह पृष्ठ कहते हैं: http://domain1.com/asdasdasd (लिंक संभालने नहीं है पाया जाता है), error.php से उत्पादन इस तरह दिखेगा:

Array 
( 
    [pg-name] => /path_to/public_html/asdasdasd 
) 

तो फिर तुम अनुरोध किया स्ट्रिंग "asdasdasd" करने के लिए मिल सकता है।

+0

मैं {REQUEST_FILENAME} इस RewriteCond% उपयोग कर रहा हूँ! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule^(। +) $ /404.php?pg-name=$1 [एल, आर] लेकिन समस्या यह है कि यह शीर्षलेख को 404 पर सेट नहीं कर रहा है बल्कि हेडर को 302 –

+0

पर सेट करना है "वास्तविक रीडायरेक्ट को मजबूर करें" - ध्यान दें कि यह एक _internal rewrite_ है, न कि _external "रीडायरेक्ट" _। यह अच्छा है, आप अनुरोध को "रीडायरेक्ट" ('RRriteRule'' पर 'आर' ध्वज नहीं करना चाहते हैं, अन्यथा उपयोगकर्ता को 3xx स्थिति भेजी जाएगी। हालांकि, आपको 'error.php' में उचित 404 HTTP स्थिति कोड मैन्युअल रूप से सेट करने की आवश्यकता होगी। – MrWhite

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