সীমাবদ্ধ পৃষ্ঠা 404 এ পুনর্নির্দেশ করুন


21

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

if( !current_user_can('administrator') ) { show_404(); exit(); }

আমি একটি পুনর্নির্দেশ ব্যবহার করার কথা ভেবেছি, তবে আমি url টি একই রাখতে চাই।


আপনি যদি বিদ্যমান কোন পৃষ্ঠার জন্য কোনও ব্যবহারকারীর অ্যাক্সেস অস্বীকার করছেন, 404 হ'ল ব্যবহার করা ভুল ত্রুটি কোড। একটি 401 বা 403 আরও বোধগম্য হবে।
মোপিট

1
তুমি ঠিক. আমি ক্লায়েন্টের কাছ থেকে এই ধারণাটি পেয়েছিলাম যে তিনি পৃষ্ঠাটি অস্তিত্ব সম্পর্কে জানতে অ্যাক্সেস ছাড়া কাউকে চাননি, একটি 401 নিক্ষেপ করলে বলবে এটি বিদ্যমান তবে নিষিদ্ধ। যাইহোক, পরিবর্তে 401 নিক্ষেপ করা এটি একটি সহজ পরিবর্তন হবে।
ইভান ইয়াং

উত্তর:


52

আমার শিরোনামে নিম্নলিখিত কোডটি ব্যবহার করে আমি একটি 404 ত্রুটি প্রদর্শন করতে সক্ষম হয়েছি।

<?php
  global $wp_query;
  $wp_query->set_404();
  status_header( 404 );
  get_template_part( 404 ); exit();
?>

এটি ভাঙতে
$wp_query->set_404():: wp_query কে এটি 404 বলে, এটি শিরোনাম পরিবর্তন করে
status_header(): একটি HTTP 404 শিরোনাম প্রেরণ করে
get_template_part(): 404 টেমপ্লেট প্রদর্শন করে


এটি একটি ভাল উত্তর, তবে আমি http_status_code(404);শিরোনামটি সঠিক (যা ওয়ার্ডপ্রেস status_header( 404 );ফাংশনের তুলনায় উল্লেখযোগ্যভাবে দ্রুত ) তা নিশ্চিত করার জন্য টেমপ্লেটটি সেট করার আগেও ব্যবহার করব । আপনি যদি পৃষ্ঠা র‌্যাঙ্কের সাথে সম্পর্কিত Disallowহন তবে আপনার রোবটস টেক্সটেও একটি বিধি রাখা উচিত যে এটি জনসাধারণের সংস্থান নয় indicate
মোপসিড

2

আপনি এমন একটি পৃষ্ঠা তৈরি করেন না যা ত্রুটি বার্তা দেখায় এবং তারপরে ব্যবহারকারীকে সেই পৃষ্ঠায় পুনঃনির্দেশ করবেন? এটি অর্জনের জন্য এখানে একটি সহজ উপায়:

404.phpফাইলটি খুলুন এবং এর শীর্ষে এই লাইনগুলি যুক্ত করুন:

/**
 * Template Name: 404 Page
 */

404 Pageটেমপ্লেট সহ একটি পৃষ্ঠা তৈরি করুন । তারপরে ব্যবহারকারীদের পুনঃনির্দেশ করুন:

if ( !current_user_can('administrator') ) {
    $404_page = get_permalink( $404_page_id );
    wp_redirect( $404_page );
    exit();
}

404 অনুরোধের জন্য আপনার কোনও পৃষ্ঠা ব্যবহার করার কারণটি হ'ল: ডাব্লুপি 404 পৃষ্ঠা আসলে একটি পৃষ্ঠা যা বিদ্যমান নেই , 404 পৃষ্ঠায় ফেরার আগে ডব্লিউপিকে তার সমস্ত বিষয়বস্তু অনুসন্ধান করতে হবে এবং সেই কাজটি সম্পদের অপচয় waste একটি প্রাক-কনফিগার করা পৃষ্ঠা ব্যবহার করা যা আপনাকে আপনার ব্লগটি আরও দ্রুত চালাতে সহায়তা করতে পারে।


আমি এটি ব্যবহার সম্পর্কে চিন্তাভাবনা করেছি। তবে আমি যে দুটি দম্পতি দেখতে পাচ্ছি তা হ'ল দুটি 404 টি টেমপ্লেট তৈরি এবং রক্ষণাবেক্ষণ করতে হবে (পৃষ্ঠা এবং বাস্তব)। ক্লায়েন্ট একটি 404 পৃষ্ঠা তৈরি করতে হবে। এবং আমি URL টি একই রাখতে চাই। উদাহরণ, আমি যদি ফিরে যেতে example.com/restricted , আমি ... / 404 / পুনঃনির্দেশিত হবে না
ইভান Yeung

আসলে আমি কেবল বুঝতে পেরেছি যে 404.php টেম্পলেট। আমার ভুল.
ইভান ইয়াং

না, যদি আপনি কোনও ধরণের পৃষ্ঠা র‌্যাঙ্কিং পছন্দ করেন তবে এটি একটি দুর্দান্ত ভয়ঙ্কর ধারণা। অনুসন্ধান ইঞ্জিনগুলি কেবল এমন পৃষ্ঠাগুলি বিবেচনা করে যা 404 বা 4XX রেঞ্জের শিরোনামটিকে দর্শকের ত্রুটি হিসাবে দেখায় এবং 200 পৃষ্ঠার প্রত্যাবর্তন করে এমন কোনও কিছুকে আনন্দের সাথে সূচক করে দেবে। আপনি যদি কোনও পুনর্নির্দেশ করেন তবে আপনি ক্রলরদের বলছেন যে আপনার পাওয়া যায় না এমন পৃষ্ঠাটি একটি বৈধ পৃষ্ঠা এবং এটি আপনার পৃষ্ঠা র‌্যাঙ্কিংয়ে খারাপভাবে বিশৃঙ্খলা করবে। 404 পৃষ্ঠাগুলি পেলে আপনার যা করতে হবে তা সত্যিই করা উচিত http_response_code(404); exit();। আপনি যদি একটি পৃষ্ঠা চান, তবে get_template_part( 404 );প্রস্থান করার আগে ব্যবহার করুন। এটি কোনও ওয়ার্ডপ্রেস কার্যকারিতার চেয়েও দ্রুত।
মোপসিড

0

আপনি এই কোডটি 404.php ফাইল করতে প্রকৃতপক্ষে ব্যবহৃত থিম ডিরেক্টরিতে লিখতে পারেন (ডাব্লুপি-সামগ্রী / থিম //0/ 404.php) :

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".get_bloginfo('url'));
exit();
?>

এই কোডটি অবশ্যই ফাইলের শুরু থেকে শুরু করা উচিত (আগে কোনও অক্ষর ছাড়াই)

মূলটির সাথে লিঙ্ক: কীভাবে আপনার 404 পৃষ্ঠাটি ওয়ার্ডপ্রেসে হোম পৃষ্ঠাতে পুনর্নির্দেশ করবেন


ওপি প্রকৃতপক্ষে 404 জন ব্যবহারকারীদের জন্য নির্দিষ্ট মাপদণ্ড পূরণ না করার জন্য প্রদর্শিত হওয়ার উপায় খুঁজছে, যেমন "যদি ব্যবহারকারী এ'র 'ক্যান_ডিট' ক্ষমতা না থাকে তবে 404 পৃষ্ঠা প্রদর্শন করুন।"
ফটস্কট

404 গুলি পুনর্নির্দেশ করবেন না। Location: xxxএকটি 301 শিরোলেখ সেট করে, যা ক্রোলারদের বলে যে সেখানে একটি বৈধ সংস্থান আছে এবং যখন তারা নির্ধারণ করে যে সেখানে নেই তা আপনার র‌্যাঙ্কিংকে হত্যা করে।
মোপসিড

0

আমার অনুরূপ প্রয়োজনীয়তা ছিল যেখানে আমি ব্যবহারকারীদের যে ভূমিকা ছিল তার উপর ভিত্তি করে লেখক.পিএফপি পৃষ্ঠায় অ্যাক্সেস করতে দেওয়া উচিত নয় my আমি আমার চেকগুলি করতে টেমপ্লেট_ডাইরেক্ট অ্যাকশনটি নিবন্ধন করি এবং আসল পৃষ্ঠাটি লোড হওয়ার আগেই 404 পৃষ্ঠায় পুনঃনির্দেশ করি।

নিবন্ধন:

add_action( 'template_redirect', [ $this, 'handle_inactive_users']);

হ্যান্ডলার সঠিক নয়:

public function handle_inactive_users() {
    global $wp_query;
    if ( $wp_query->is_author() ) {
        $user = $wp_query->get_queried_object();
        if ( is_a( $user, \WP_User::class ) && $user->has_cap( 'inactive' ) ) {
            $wp_query->set_404();
            status_header( 404 );
            get_template_part( 404 );
            exit();
        }
    }
}

আপনি যদি কেবলমাত্র টেমপ্লেট অংশের মাঝখানে নীচের কোড স্নিপেট ব্যবহার করতে চান, পৃষ্ঠাটি ইতিমধ্যে আংশিকভাবে রেন্ডার হয়ে থাকতে পারে এবং আপনাকে আসলে কোনও 404 পৃষ্ঠায় পুনঃনির্দেশিত করা হয়নি। template_redirectকর্মে এটি করা এত ভাল -

$wp_query->set_404();
status_header( 404 );
get_template_part( 404 );
exit();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.