मैं वर्डप्रेस की 404 हैंडलिंग को कैसे छोड़ दूं और स्थिर फाइलों के लिए 404.html की सभी 404 त्रुटियों को पुनर्निर्देशित करूं?


17

मैं वर्डप्रेस की 404 हैंडलिंग को कैसे छोड़ दूं और स्थिर फाइलों के लिए 404.html की सभी 404 त्रुटियों को पुनर्निर्देशित करूं?

मैं पढ़ता हूं और लगता है कि यह संभव नहीं है जब पर्मलिंक्स का उपयोग किया जाए?

उद्देश्य PHP लोड नहीं करके 404 त्रुटियों के लिए सर्वर लोड को कम करना है।

जवाबों:


8

.htaccess स्टैटिक फाइल्स के लिए वर्डप्रेस 404 एरर हैंडलिंग को स्किप करें

<IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_URI} !(robots\.txt|sitemap\.xml(\.gz)?)
        RewriteCond %{REQUEST_FILENAME} \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$ [NC]
        RewriteRule .* - [L]
    </IfModule>

नोट: ये नियम W3 कुल कैश प्लगइन द्वारा उत्पन्न किए गए थे *

Nginx स्टैटिक फाइलों के लिए वर्डप्रेस 404 को हैंडल करना छोड़ दें।

if (-f $request_filename) {
    break;
}
if (-d $request_filename) {
    break;
}
if ($request_uri ~ "(robots\.txt|sitemap\.xml(\.gz)?)") {
    break;
}
if ($request_uri ~* \.(css|js|html|htm|rtf|rtx|svg|svgz|txt|xsd|xsl|xml|asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|swf|tar|tif|tiff|wav|wma|wri|xla|xls|xlsx|xlt|xlw|zip)$) {
    return 404;
}

1

क्रिस_ओ ने जो कहा उस पर विस्तार करने के लिए .... मैं डब्ल्यू 3 कुल कैश स्थापित करूँगा और उस प्लगइन से सेटिंग्स का उपयोग करके स्थिर फ़ाइलों को कैश नहीं करूंगा। अपने आप में प्लगइन बहुत उपयोगी है और आपकी साइट को गति देने के लिए बहुत जरूरी है, विशेष रूप से नवीनतम अपडेट के साथ।

इसके अलावा, मैं आपको सलाह देता हूं कि आप Wordpress से एक त्रुटि 404 पेज बनाने पर एक नज़र डालें, यह देखने के लिए कि स्थिर फ़ाइलों, 403 (निषिद्ध), आदि के लिए 404 को कैसे संभालना है।


1

शायद एक सरल उपाय। सशर्त टैग का उपयोग करें is_404()और अपनी स्थिर फ़ाइल पर पुनर्निर्देशित करें; फ़ाइल header.phpया index.phpथीम में कोड शामिल करें ।

यहाँ एक उदाहरण है।

   if ( is_404() ) {
      wp_redirect( 'static.htm' );
      exit;
   }

लिंक


2
निर्णय लेने का कार्य अभी भी PHP में किया जाता है और htaccess स्तर पर नहीं। उद्देश्य पूरी तरह से 404 त्रुटियों के लिए PHP के लोडिंग को छोड़ना है।
फ्रीथिंकर

2
@freethinker: सही, केवल php के माध्यम से; htaccess के माध्यम से जिस तरह से तेजी से होता है, लेकिन शायद इतना आसान नहीं में वर्डप्रेस से निपटने
bueltge

@kaiser उफ़, सवाल अद्यतन
freethinker

0

मुझे यकीन नहीं है कि यह संभव है। यदि आप htaccess कोड को देखते हैं जो वर्डप्रेस बनाता है जब आप permalinks सक्षम करते हैं, तो यह मूल रूप से कहता है: "यदि फ़ाइल / निर्देशिका नहीं मिल सकती है, तो इसे index.php पर भेजें।" इसमें सभी वास्तविक 404 अनुरोध शामिल हैं। हर गतिशील रूप से जनित सार्वजनिक संसाधन की एक सूची बनाने के बाहर जिसे वर्डप्रेस जानता है और सीधे इसे .htaccess में सम्मिलित करता है, आपको 404 के हैंडल के लिए php लोड करना होगा।


0

मुझे क्रिस_ओ का विचार पसंद आया , लेकिन मैंने अपना खुद का संस्करण बनाया, जो अधिक सुरक्षित है।

इसलिए मैंने क्या किया, मैंने केवल अपवादों के लिए फ़ोल्डर्स जोड़े, इसलिए यदि आपके अनुरोध उन लाइनों से शुरू होते हैं - तो यह निश्चित रूप से एक वैध परमिटलिंक नहीं है। अधिकांश अनुरोध बॉट्स से आ रहे हैं जो शोषण के लिए उन फ़ोल्डरों की सामग्री की जांच करने की कोशिश कर रहे हैं। वे प्रभावी रूप से फ़िल्टर किए जाएंगे, और यदि आवश्यक हो तो आप कुछ छोटे स्थिर 404 पृष्ठ प्रदर्शित कर सकते हैं।

अन्य अनुरोधों को अभी भी वर्डप्रेस द्वारा नियंत्रित किया जाएगा, और यदि कोई गलत पते पर प्रवेश करता है, तो यह आपके टेम्पलेट के भीतर एक उपयोगकर्ता के अनुकूल नहीं मिला संदेश प्रदर्शित करेगा। क्रिस_ओ का समाधान केवल फ़ाइल एक्सटेंशन की तरह दिखने वाले अनुरोधों के लिए काम करेगा, अन्यथा वे भी वर्डप्रेस द्वारा नियंत्रित किए जाएंगे।

इसे और अधिक विश्वसनीय बनाने के लिए, आप अपनी कच्ची एक्सेस फ़ाइल को पुनः प्राप्त कर सकते हैं और 404 त्रुटियों की खोज कर सकते हैं। यदि आप कई अनुरोधों को देखते हैं जो विशेष लाइनों से शुरू होते हैं, तो आप उन्हें इस फ़िल्टर में शामिल कर सकते हैं:

#adding your own handler
ErrorDocument 404 /404/index.html

<IfModule mod_rewrite.c>
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(404|cgi-bin|wp-admin|wp-content|wp-includes)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

0

मेरे पास मेरी साइट पर स्थापित CMS गुणक है, इसलिए मैं सभी CMS के लिए समान 404 त्रुटि पृष्ठ का उपयोग करने के लिए कुछ इस तरह का उपयोग करता हूं। मैं इस आत्मविश्वास का उपयोग Nginx + FastCgi के लिए करता हूं और यह ठीक काम कर रहा है:

server {
    ...
    error_page 404 /404.html; #enable custom 404 error page
    location ~ /\.ht {
        deny all; #disable access to htaccess
    }
    location ~ [^/]\.php(/|$) {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on; #disable PHP 404 error intercept
    }
    location /wordpress/ {
        try_files $uri $uri/ /wordpress/index.php?$args;
    }
}

मैं इसके साथ php.ini में इस विन्यास का उपयोग करता हूं:

cgi.fix_pathinfo = 1 

वर्डप्रेस इस तरह स्थापित होता है http://example.com/wordpress/ । 404.html http://example.com/ की जड़ में स्थित है ।

PS यह मत भूलो कि परिवर्तनों को प्रभावी करने के लिए php.ini या nginx.conf फ़ाइलों में परिवर्तन करने के बाद PHP और Nginx सेवाओं को फिर से शुरू करने की आवश्यकता है।


-3

इसे करने के 3 तरीके हैं

  1. अपना 404.php कोड बदलकर।
  2. Wordpress plugins का उपयोग करके।
  3. अपनी .htaccess फ़ाइल को संपादित करके।

पूरा ट्यूटोरियल - (लिंक मृत और स्पैम पर पुनर्निर्देशित)


हाय मज़हर, क्या आप अपनी साइट के लिंक के बजाय एक पूर्ण उत्तर पोस्ट कर सकते हैं। अगर वह लिंक मर जाता है, तो यह जवाब बहुत ज्यादा बेकार होगा! चीयर्स!
स्टीफन हैरिस

यह पृष्ठ 404 देता है। विडंबना। या आप कुछ कहना चाह रहे हैं?
मिकिएल वैन डेर ब्लोंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.