خطای ۴۰۴ در یک نگاه
خطای ۴۰۴ یعنی صفحه ای که بازدیدکننده خواسته وجود ندارد؛ خود آدرس درست است ولی محتوایی پشت آن نیست. دو نفر باید دو کار متفاوت بکنند: بازدیدکننده فقط باید آدرس را دوباره چک کند، و صاحب سایت باید ببیند چرا آن صفحه از دست رفته و همان اعتبار را به صفحهٔ درست برگرداند. این راهنما برای نفر دوم نوشته شده است.
خلاصه در سه خط: هر صفحهٔ ۴۰۴ یک زنگ خطر است؛ بعضی را باید برگرداند، بعضی را ریدایرکت کرد و بعضی را باید همان ۴۰۴ نگه داشت. تفاوت این سه تصمیم، همان چیزی است که بیشتر راهنماهای فارسی توضیح نمی دهند.
خطای ۴۰۴ چیست؟ تعریف دقیق و تفاوتش با ۴۱۰، ۴۰۳ و ۴۰۴ نرم
کدهای وضعیت وب، زبان سرور با مرورگر هستند. چهار کد را با هم اشتباه می گیرند در حالی که معنی هر کدام زمین تا آسمان فرق دارد:
| کد | معنی | چه زمانی درست است |
|---|---|---|
| ۴۰۴ | صفحه پیدا نشد | صفحه برای همیشه حذف شده و جانشینی ندارد |
| ۴۱۰ | صفحه برای همیشه رفته | مثل ۴۰۴ ولی صریح تر: دیگر هرگز برنمی گردد |
| ۴۰۳ | دسترسی ممنوع | صفحه هست ولی اجازهٔ دیدن ندارد |
| ۴۰۴ نرم | صفحهٔ «پیدا نشد» با کد ۲۰۰ | هیچ وقت درست نیست؛ اشتباه فنی رایج |
کد ۴۰۴ نرم یعنی صفحه می گوید «پیدا نشد» ولی به سرور می گوید «همه چیز خوب است». گوگل این را دوست ندارد، چون نمی فهمد آن صفحه باید از فهرستش حذف شود یا نه. این یکی از رایج ترین اشتباه ها در سایت هایی است که قالب ۴۰۴ اختصاصی دارند.

دلایل ایجاد خطای ۴۰۴: پنج موردی که تقریبا همهٔ موارد از آن می آید
پنج دلیل، تقریبا همهٔ موارد را پوشش می دهد:
- صفحه حذف شده است: محصول یا مقاله ای که پاک شده ولی پیوندهایش هنوز در سایت و در گوگل هست.
- آدرس عوض شده و ریدایرکت نگذاشته اند: شایع ترین دلیل در بازطراحی سایت. آدرس تازه ساخته می شود ولی آدرس قدیمی به آن وصل نمی شود.
- تایپ اشتباه آدرس: خطای کاربر؛ اینجا کاری از ما ساخته نیست جز داشتن یک صفحهٔ ۴۰۴ خوب.
- پیوند شکستهٔ داخلی: در متن مقاله یا منو به آدرسی پیوند داده ایم که وجود ندارد. این یکی کاملا در کنترل ماست.
- مشکل سرور یا سیستم مدیریت محتوا: خطای تنظیمات، قالب یا افزونه که آدرس های سالم را هم ۴۰۴ می کند.
خطای ۴۰۴ چه ضرری به سایت می زند؟
سه ضرر، به ترتیب اهمیت:
- هدر رفتن اعتباری که سال ها ساخته شده: اگر صفحه ای پیوند از سایت های دیگر داشته و حالا ۴۰۴ می دهد، آن اعتبار به جایی نمی رسد. ریدایرکت نکردن، یعنی ریختن سرمایهٔ قبلی دور.
- تجربهٔ بد بازدیدکننده: مخاطبی که از گوگل آمده و به دیوار می خورد، جای دیگری می خرد.
- خطای خزش: وقتی گوگل مکررا ۴۰۴ می بیند، زمان خزشش را روی صفحه های بی نتیجه می گذارد؛ در سایت فروشگاهی این یعنی صفحه های مهم دیرتر دیده می شوند.
یک نکتهٔ آرامش بخش: وجود چند ۴۰۴ در سایت، خودش امتیاز منفی نیست. گوگل می فهمد صفحه ها حذف می شوند. مشکل واقعی، ۴۰۴ روی صفحه هایی است که پیوند بیرونی یا مشتری داشته اند.
قدم اول: کدام صفحه ها ۴۰۴ می دهند؟
قبل از هر اصلاحی، فهرست بگیر. سه راه، از ساده به دقیق:
- گزارش گوگل: در ابزار سرچ کنسول، بخش صفحه ها را باز کن و آدرس هایی را ببین که وضعیت «پیدا نشد» دارند. اینها صفحه هایی هستند که گوگل واقعا به آنها رسیده است.
- بررسی پیوندهای شکسته: نشانی صفحه های سایت و پیوندهای داخلی را استخراج کن و یکی یکی وضعیت پاسخ را بگیر. یک حلقهٔ کوچک هم کافی است: نشانی هر صفحه را بگیر، پیوندهای داخلش را دربیاور و هر پیوندی که کد ۴۰۴ برگرداند ثبت کن.
- گزارش سرور (دقیق ترین): فایل لاگ سرور، هر بار ۴۰۴ را ثبت می کند؛ حتی بازدیدکننده هایی که گوگل ندیده. الگوها را نشان می دهد: کدام مسیرها بیشتر ۴۰۴ می دهند و از کجا پیوند خورده اند.
# نمونهٔ گرفتن فهرست پرتکرارترین ۴۰۴ها از لاگ سرور
awk '($9 == 404) {print $7}' /var/log/nginx/access.log \
| sort | uniq -c | sort -rn | head -30
این یک دستور، در بیشتر سایت ها نصف مسئله را روشن می کند: می بینی کدام آدرس ها بیشترین درخواست را داشته اند و ۴۰۴ گرفته اند.

تصمیم درست برای هر صفحهٔ ۴۰۴
اینجا همان جایی است که بیشتر راهنماها رد می شوند. برای هر آدرس، یکی از این چهار تصمیم درست است:
| وضعیت صفحه | تصمیم درست | چرا |
|---|---|---|
| محتوای مشابه در آدرس تازه هست | ریدایرکت ۳۰۱ | اعتبار و بازدیدکننده منتقل می شود |
| صفحه مهم بوده ولی جانشین ندارد | بازگرداندن صفحه | حفظ درآمد و اعتبار |
| محصول یا مقاله برای همیشه حذف شده | کد ۴۱۰ یا ۴۰۴ باقی بماند | گوگل سریع تر از فهرستش حذف می کند |
| صفحهٔ آزمایشی یا بی ارزش | همان ۴۰۴ بماند | کار بی فایدهٔ اضافه نکن |
قاعدهٔ سرانگشتی: اگر صفحه در ۹۰ روز گذشته بازدید یا سفارش داشته، برگردانش یا ریدایرکتش کن. اگر نه، رهایش کن و فقط پیوندهای شکستهٔ داخلی را درست کن.
روش های رفع خطای ۴۰۴: ریدایرکت ۳۰۱ در عمل
سه حالت رایج، سه راه. همه روی سرور اجرا می شوند و چند ثانیه وقت می برند.
۱) سرور آپاچی (فایل htaccess در ریشهٔ سایت):
Redirect 301 /old-product.php /products/new-product
Redirect 301 /blog/old-article /blog/new-article
برای حالت هایی که الگو دارند، یک قاعده همه را پوشش می دهد:
RewriteEngine On
RewriteRule ^product/(.*)$ /products/$1 [R=301,L]
۲) سرور انجینکس:
location = /old-product.php { return 301 /products/new-product; }
location = /blog/old-article { return 301 /blog/new-article; }
۳) سایت لاراولی: اگر پیوندهای قدیمی فهرست مشخصی دارند، جدول ریدایرکت بساز تا بدون تغییر کد قابل مدیریت باشد:
// در فایل مسیرها
Route::get('/{oldPath}', function (string $oldPath) {
$row = DB::table('redirects')->where('from', '/'.$oldPath)->first();
abort_if(!$row, 404);
return redirect($row->to, 301);
})->where('oldPath', '.*');
// جدول ریدایرکت ها
Schema::create('redirects', function (Blueprint $table) {
$table->id();
$table->string('from')->unique();
$table->string('to');
$table->unsignedSmallInteger('hits')->default(0);
$table->timestamps();
});
و برای هر ریدایرکت، یک تست بنویس تا در آینده کسی بدون اینکه بفهمد پاکش نکند:
it('redirects the old product url', function () {
$this->get('/old-product.php')->assertRedirect('/products/new-product');
});
ساخت صفحهٔ ۴۰۴ اختصاصی که بازدیدکننده را نگه دارد
صفحهٔ پیش فرض سرور، بازدیدکننده را بیرون می کند. صفحهٔ خوب چهار چیز دارد:
- یک جملهٔ روشن: «این صفحه پیدا نشد» — بدون شوخی الکی و بدون صفحهٔ سفید.
- کادر جست وجو: اولین کاری که مخاطب می کند، جست وجوی همان چیزی است که می خواست.
- پیوند به بخش های پول سایت: خدمات، نمونه کارها، پرفروش ترین ها، تماس.
- راه تماس: اگر دنبال خرید بود، باید بتواند در همان صفحه تماس بگیرد.
و دو چیزی که نباید داشته باشد: پیوند خودکار به صفحهٔ اصلی بدون توضیح، و کد وضعیت ۲۰۰ به جای ۴۰۴. تصمیم خودکار «همه را بفرست به صفحهٔ اصلی» راحت ترین راه است و بدترین نتیجه را می دهد، چون گوگل هزار آدرس مختلف را یک صفحه می بیند.
// در لاراول، صفحهٔ ۴۰۴ با کد درست برگردانده می شود
Route::fallback(function () {
return response()->view('errors.404', [], 404);
});
قدم صفر: کد وضعیت را با چشم خودت ببین
قبل از هر تصمیمی، لازم نیست به کسی اعتماد کنی: خودت کد پاسخ سرور را بگیر. اگر عدد ۴۰۴ برگشت، صفحه واقعا حذف شده؛ اگر ۲۰۰ برگشت در حالی که صفحه می گوید «پیدا نشد»، آن ۴۰۴ نرم است و باید درست شود.
# کد پاسخ یک آدرس را ببین (سرور و مرورگر هر دو یک چیز می گویند)
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/old-page
همین یک خط، بیشتر بحث هایی که دربارهٔ «چرا صفحهٔ من پیدا نمی شود» می شود را تمام می کند. برای بررسی گروهی، فهرست آدرس ها را در یک فایل بگذار و با یک حلقه همه را بگیر:
while read -r url; do
printf "%s %s\n" "$(curl -s -o /dev/null -w '%{http_code}' "$url")" "$url"
done < urls.txt
پنج اشتباه رایجی که باید دور بزنی
- ریدایرکت همهٔ ۴۰۴ها به صفحهٔ اصلی: گوگل این را به عنوان ۴۰۴ نرم ثبت می کند.
- استفاده از کد ۳۰۲ به جای ۳۰۱: موقت است و اعتبار منتقل نمی شود.
- زنجیرهٔ ریدایرکت: صفحه ای به صفحه ای دیگر و آن یکی به سومی. هر حلقه، بخشی از اعتبار را می سوزاند؛ ریدایرکت را مستقیم بزن.
- ریدایرکت به صفحهٔ ۴۰۴: یعنی همان خطا با یک قدم اضافه.
- رها کردن: «حالا بعدا درستش می کنیم»: هر هفته، بخشی از اعتبار آن پیوندها تحلیل می رود.
جلوگیری: چک لیست پیش از هر تغییر آدرس
- روی نسخهٔ آزمایشی، فهرست همهٔ آدرس های قدیمی را استخراج کن.
- برای هر آدرس قدیمی، یک مقصد روشن تعیین کن (همان صفحه، یا صفحهٔ مرتبط، یا ۴۱۰).
- فهرست ریدایرکت را قبل از انتشار آماده کن، نه بعد از آن.
- پس از انتشار، یک بار همهٔ فهرست را با درخواست خودکار تست کن و کد پاسخ هر مورد را ببین.
- فهرست تازه را به گوگل معرفی کن تا آدرس های جدید را سریع تر ببیند.

پایش: چطور بفهمیم دوباره زیاد شده؟
سه ساده، که اگر ماهی یک بار انجام شوند کافی است:
- يک نگاه ماهانه به گزارش گوگل: اگر تعداد آدرس های «پیدا نشد» یک بار بالا رفت، همان هفته بررسی کن.
- یک هشدار روی لاگ سرور: اگر تعداد ۴۰۴ در یک روز دو برابر میانگین شد، خبر بدهد (یک دستور یا یک سرویس کوچک کافی است).
- پایش پیوندهای داخلی پس از هر انتشار: هر مقالهٔ تازه، چند پیوند داخلی به مقالات قدیمی می دهد؛ اگر آن پیوندها خراب باشند، خودمان ۴۰۴ می سازیم.
اگر وقت یا دانش فنی نداری
سه بخش این کار قابل واگذاری است: تشخیص و گرفتن فهرست، تصمیم گیری و نوشتن ریدایرکت ها، و ساخت صفحهٔ ۴۰۴ اختصاصی. اگر تصمیم می گیری که این کار را به کسی بسپاری، همین سه قلم را بخواه و در قرارداد بنویس که پس از انجام، فهرست ریدایرکت ها به تو تحویل داده شود. جزئیات خدمات ما در طراحی و توسعه سایت آمده است؛ برای بررسی سریع وضعیت فنی سایتت هم تماس بگیر.
پرسش های متداول دربارهٔ خطای ۴۰۴
آیا خطای ۴۰۴ یعنی من مسدود شده ام؟
نه. ۴۰۴ یعنی صفحه پیدا نشد، نه اینکه دسترسی تو بسته شده. کد ۴۰۳ برای مسدود شدن است و تفاوتش این است که صفحه وجود دارد ولی اجازهٔ دیدن ندارد.
خطای ۴۰۴ رتبهٔ سایت را پایین می آورد؟
خود ۴۰۴ امتیاز منفی نیست؛ گوگل می داند صفحه ها حذف می شوند. ضرر واقعی، هدر رفتن اعتبار پیوندها و بازدیدکننده هاست. اگر صفحه ای پیوند بیرونی داشته و ۴۰۴ بدهد، همان سرمایه هدر می رود.
ریدایرکت همهٔ ۴۰۴ها به صفحهٔ اصلی درست است؟
نه. گوگل این را ۴۰۴ نرم می بیند و هزار آدرس مختلف را یک صفحه حساب می کند. ریدایرکت باید به نزدیک ترین صفحهٔ مرتبط باشد، یا کد ۴۱۰ بگیرد.
چطور بفهمم کدام پیوندها شکسته اند؟
سه راه: گزارش «پیدا نشد» در ابزار گوگل، بررسی خودکار پیوندهای سایت، و لاگ سرور. لاگ دقیق ترین است چون بازدیدکننده های واقعی را هم نشان می دهد.
صفحهٔ ۴۰۴ باید چه چیزهایی داشته باشد؟
جملهٔ روشن، کادر جست وجو، پیوند به خدمات و نمونه کارها، و راه تماس. بدون این ها، مخاطبی که از گوگل آمده به سایت دیگری می رود.
جمع بندی
خطای ۴۰۴ یک مشکل فنی کوچک به نظر می رسد، ولی برای هر آدرس یک تصمیم درست وجود دارد: برگردان، ریدایرکت کن، یا رهایش کن. سایت هایی که این تصمیم را ماهانه می گیرند، اعتبار سال های قبل را از دست نمی دهند و بازدیدکنندهٔ گوگل را هم از دست نمی دهند. سه قدم عملی برای همین هفته: فهرست ۴۰۴ها را بگیر، برای هر مورد یکی از چهار تصمیم را ثبت کن، و صفحهٔ ۴۰۴ سایتت را باز کن و ببین شبیه یک صفحهٔ بیرون کننده است یا یک راه نجات.


ارسال نظر جدید