আমি কীভাবে ওয়ার্ডপ্রেসের 404 হ্যান্ডলিং এড়িয়ে স্ট্যাটিক ফাইলগুলির জন্য 404 টি ত্রুটি 404 এইচটিএমএল এ পুনঃনির্দেশ করব?


17

আমি কীভাবে ওয়ার্ডপ্রেসের 404 হ্যান্ডলিং এড়িয়ে স্ট্যাটিক ফাইলগুলির জন্য 404 টি ত্রুটি 404 এইচটিএমএল এ পুনঃনির্দেশ করব?

আমি পড়েছি এবং পারমালিক্স ব্যবহার করার সময় এটি সম্ভব না বলে মনে হচ্ছে?

উদ্দেশ্য পিএইচপি লোড না করে 404 ত্রুটির জন্য সার্ভারের লোড হ্রাস করা।

উত্তর:


8

স্ট্যাটিক ফাইলগুলির জন্য ওয়ার্ডপ্রেস 404 ত্রুটি পরিচালনা করার জন্য .htaccess এড়িয়ে যান

<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>

দ্রষ্টব্য: এই নিয়মগুলি ডাব্লু 3 মোট ক্যাশে প্লাগইন দ্বারা তৈরি হয়েছিল *

স্থায়ী ফাইলগুলির জন্য এনগিনেক্স ওয়ার্ডপ্রেস 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 টোটাল ক্যাশে ইনস্টল করব এবং স্ট্যাটিক ফাইলগুলি ক্যাশে না করতে সেই প্লাগইন থেকে সেটিংস ব্যবহার করব। প্লাগইন নিজেই খুব দরকারী এবং আপনার সাইটের গতি বাড়ানোর জন্য বিশেষত সর্বশেষতম আপডেট।

এছাড়াও আমি আপনাকে প্রস্তাব দিচ্ছি যে স্থির ফাইলগুলির জন্য 404 কীভাবে পরিচালনা করতে হবে তা দেখতে ওয়ার্ডপ্রেস থেকে একটি ত্রুটি 404 পৃষ্ঠা তৈরি করা উচিত, 403 (নিষিদ্ধ), ইত্যাদি এটি ভাল পঠনযোগ্য।


1

হতে পারে একটি সহজ সমাধান। শর্তসাপেক্ষ ট্যাগটি ব্যবহার করুন is_404()এবং আপনার স্ট্যাটিক ফাইলে পুনর্নির্দেশ তৈরি করুন; ফাইলটিতে কোড অন্তর্ভুক্ত করুন header.phpবাindex.php থিমের ।

এখানে একটি উদাহরণ।

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

লিংক


2
সিদ্ধান্তটি এখানে এখনও পিএইচপি-তে করা হয় এবং এইচটিসেসি স্তরে নয়। উদ্দেশ্য হ'ল পিএইচপি লোডিং সম্পূর্ণভাবে 404 ত্রুটির জন্য এড়িয়ে যাওয়া।
ফ্রিথিংকার

2
@ ফ্রিথিংকার: ঠিক, কেবল পিএইচপি এর মাধ্যমে;
এইচটিসেসের মাধ্যমে যাওয়ার উপায়টি

@ কাইজার উফ, প্রশ্নটি আপডেট করেছেন
ফ্রিথিংকার

0

আমি নিশ্চিত যে এটি সম্ভব কিনা। ওয়ার্ডপ্রেস যেটি এইচটিসেস কোড তৈরি করে যখন আপনি পারমালিংকস সক্ষম করেন তা যদি আপনি লক্ষ্য করেন তবে এটি মূলত বলে: "যদি ফাইল / ডিরেক্টরিটি খুঁজে পাওয়া যায় না, তবে এটি সূচি.এফপিতে প্রেরণ করুন।" এটিতে সমস্ত আসল 404 টি অনুরোধ অন্তর্ভুক্ত রয়েছে। ওয়ার্ডপ্রেস জানেন এমন প্রতিটি গতিময় উত্পন্ন জনসাধারণের সংস্থার একটি তালিকা তৈরি করার বাইরে এবং সরাসরি এটি .htaccess এ সন্নিবেশ করানোর জন্য, 404 এর পরিচালনা করতে আপনাকে পিএইচপি লোড করতে হবে।


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

আমি আমার সাইটে বহুগুণ সিএমএস ইনস্টল করেছি তাই আমি সমস্ত সিএমএসের জন্য একই 404 ত্রুটি পৃষ্ঠাটি ব্যবহার করতে এরকম কিছু ব্যবহার করি। আমি এই কনফিডটি এনজিনেক্স + ফাস্টসিগির জন্য ব্যবহার করি এবং এটি ভাল কাজ করছে:

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 ফাইলগুলিতে পরিবর্তন করার পরে পুনরায় চালু করা দরকার।


-3

এটি করার 3 টি উপায় রয়েছে

  1. আপনার 404.php কোড পরিবর্তন করে।
  2. ওয়ার্ডপ্রেস প্লাগইন ব্যবহার করে।
  3. আপনার .htaccess ফাইলটি সম্পাদনা করে।

সম্পূর্ণ টিউটোরিয়াল - (লিঙ্কটি মৃত এবং স্প্যামে পুনঃনির্দেশিত)


হাই মাজহার, আপনি নিজের সাইটের লিংক না দিয়ে পুরো উত্তর পোস্ট করতে পারেন? যদি সেই লিঙ্কটি মারা যায় তবে এই উত্তরটি বেশ কার্যকর হবে না! চিয়ার্স!
স্টিফেন হ্যারিস

এই পৃষ্ঠাটি একটি 404 দেয় I নাকি আপনি কিছু বলার চেষ্টা করছেন?
মিচিয়েল ভ্যান ডার ব্লঙ্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.