مواد پر جائیں
سرور اور .htaccess

ورڈپریس کی ڈیفالٹ .htaccess فائل: کوڈ اور بحالی کا طریقہ

مستقل لنکس کے لیے ورڈپریس کا درست ڈیفالٹ .htaccess کوڈ، ہر لائن کا کام، اور پوسٹس پر 404 آنے مگر ہوم پیج چلنے کی صورت میں فائل بحال کرنے کا طریقہ۔

شائع شدہ

ورڈپریس کی ڈیفالٹ .htaccess فائل وہ مختصر RewriteEngine بلاک ہے جو یہ سافٹ ویئر آپ کی سائٹ کے روٹ میں موجود .htaccess میں لکھتا ہے، تاکہ /2026/10/post-ka-naam/ جیسے مستقل لنکس 404 دینے کے بجائے کام کریں۔ یہ اس طرح نظر آتا ہے:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

یہ رولز اس کوڈ سے آتے ہیں جس سے ورڈپریس یہ بلاک بناتا ہے، اور یہ ورڈپریس کی اپنی .htaccess گائیڈ سے مطابقت رکھتے ہیں۔ ورڈپریس # BEGIN WordPress کے فوراً بعد تین کمنٹ لائنیں بھی لکھتا ہے، جو خبردار کرتی ہیں کہ مارکرز کے درمیان کی گئی تبدیلیاں مٹا دی جائیں گی۔ ان سے رولز کے کام پر کوئی فرق نہیں پڑتا۔

سب فولڈر انسٹال میں ورڈپریس سب فولڈر کا راستہ RewriteBase اور آخری رول دونوں میں لکھتا ہے، مثلاً RewriteBase /blog/ اور RewriteRule . /blog/index.php [L]۔ ملٹی سائٹ نیٹ ورکس ایک مختلف بلاک استعمال کرتے ہیں، اور ورڈپریس ان کے لیے یہ فائل خودکار طور پر نہیں لکھتا۔

اہم نکات

  • ورڈپریس یہ بلاک Apache اور LiteSpeed پر اس وقت بناتا ہے جب اسے لکھنے کی اجازت ہو اور خوبصورت مستقل لنکس آن ہوں۔ سیٹنگز > مستقل لنکس کھولنا کافی ہے۔
  • اگر فائل غائب یا خراب ہو تو مستقل لنکس 404 دیتے ہیں جبکہ ہوم پیج لوڈ ہوتا رہتا ہے، کیونکہ ہوم پیج کو rewrite rules کی ضرورت نہیں ہوتی۔
  • آپ یا کوئی پلگ ان جو کچھ شامل کرے اسے # BEGIN WordPress کے اوپر رکھیں، مارکرز کے اندر کبھی نہیں۔ فائل اپ ڈیٹ کرتے وقت ورڈپریس ان کے درمیان کی ہر چیز بدل دیتا ہے۔
Apache سے ٹرمینل آؤٹ پٹ: .htaccess فائل کے بغیر ہوم پیج 200 اور پوسٹ کا URL 404 دیتا ہے؛ ڈیفالٹ بلاک کے ساتھ دونوں 200 دیتے ہیں
Apache 2.4.58 کے اصل جوابات۔ فائل کے بغیر ہوم پیج کھل جاتا ہے اور پوسٹ کا URL 404 دیتا ہے۔ ڈیفالٹ بلاک کے ساتھ دونوں 200 دیتے ہیں۔ WordPress کی جگہ ایک لائن کی ٹیسٹ index.php استعمال ہوئی۔

ہر لائن کیا کرتی ہے

RewriteEngine On اس ڈائریکٹری کے لیے Apache کا mod_rewrite ماڈیول آن کرتی ہے؛ اس کے بغیر نیچے والے rewrite rules کچھ نہیں کرتے۔

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] یو آر ایل کو نہیں چھیڑتا (- کا یہی مطلب ہے) اور درخواست کے Authorization ہیڈر کو ایک سرور ویری ایبل میں کاپی کرتا ہے۔ ورڈپریس یہ ویری ایبل پڑھ کر ہیڈر میں بھیجا گیا یوزر نیم اور پاس ورڈ حاصل کرتا ہے، جیسے ایپلیکیشن پاس ورڈ۔

RewriteBase / وہ راستے کا سابقہ طے کرتا ہے جو Apache دوبارہ لکھے گئے یو آر ایلز کے لیے استعمال کرتا ہے۔ ورڈپریس اسے سائٹ کے مقام کے مطابق رکھتا ہے، اس لیے سب فولڈر انسٹال کو RewriteBase /blog/ ملتا ہے۔

RewriteRule ^index\.php$ - [L] ایک حفاظتی رول ہے: اگر درخواست پہلے ہی index.php کی ہو تو ری رائٹنگ رک جاتی ہے اور درخواست بغیر تبدیلی گزر جاتی ہے۔

دو RewriteCond لائنیں اصل منطق ہیں۔ %{REQUEST_FILENAME} !-f اور !-d پوچھتی ہیں: “کیا یہ درخواست کسی حقیقی فائل سے میل نہیں کھاتی، اور کسی حقیقی ڈائریکٹری سے بھی نہیں؟” آخری رول چلنے کے لیے دونوں کا درست ہونا ضروری ہے، اس لیے اصل تصویر، CSS فائل یا اپ لوڈ کی گئی PDF براہ راست پیش کی جاتی ہے اور ورڈپریس کی روٹنگ سے نہیں گزرتی۔

RewriteRule . /index.php [L] وہ رول ہے جو مستقل لنکس کو چلاتا ہے۔ جو کچھ ان دو شرطوں سے گزر جائے وہ index.php کو بھیجا جاتا ہے، اور ورڈپریس طے کرتا ہے کہ یو آر ایل سے کون سی پوسٹ، صفحہ یا آرکائیو مراد ہے۔

ورڈپریس یہ فائل کب دوبارہ بناتا ہے، اور کب نہیں

سیٹنگز > مستقل لنکس اسکرین جب بھی لوڈ ہوتی ہے ورڈپریس اپنے rewrite rules فلش کرتا ہے، اس لیے اسے کھولنا کافی ہے اور تبدیلیاں محفوظ کریں پر کلک کرنا ضروری نہیں۔ اگر .htaccess غائب ہو تو ورڈپریس اسے بنا دیتا ہے، بشرطیکہ فولڈر قابل تحریر ہو اور خوبصورت مستقل لنکس آن ہوں۔ اگر فائل موجود اور قابل تحریر ہو تو ورڈپریس مارکرز کے درمیان کا بلاک بدل دیتا ہے۔

ان صورتوں میں اس سے مسئلہ حل نہیں ہوتا:

  • فائل یا اس کا فولڈر اس یوزر کے لیے قابل تحریر نہیں جس کے تحت PHP چلتا ہے۔ اسکرین ایرر دکھاتی ہے کہ .htaccess فائل قابل تحریر نہیں، ساتھ پیسٹ کرنے کے لیے رولز بھی دیتی ہے۔ کچھ ہوسٹس پر PHP اس سسٹم یوزر سے مختلف یوزر کے تحت چلتا ہے جو آپ کی FTP اپ لوڈز کا مالک ہے، اس لیے FTP کلائنٹ میں درست نظر آنے والی اجازتیں بھی ورڈپریس کو روک سکتی ہیں۔
  • آپ nginx پر ہیں۔ ورڈپریس کی nginx گائیڈ کہتی ہے کہ nginx میں .htaccess جیسی ڈائریکٹری کی سطح والی کنفیگریشن فائل نہیں ہوتی، اور ورڈپریس سرور کنفیگریشن تبدیل نہیں کر سکتا۔ اس کے برابر روٹنگ سرور کنفیگریشن میں try_files ہدایت ہے، جس میں ایڈمنسٹریٹر کو ترمیم کرنی پڑتی ہے۔
  • AllowOverride کی قدر None ہے مرکزی Apache کنفیگریشن میں آپ کی سائٹ کی ڈائریکٹری کے لیے۔ Apache کی دستاویزات کہتی ہیں: “This means .htaccess files are completely ignored unless you explicitly enable them for a directory.” (یعنی جب تک آپ کسی ڈائریکٹری کے لیے واضح طور پر فعال نہ کریں، .htaccess فائلیں مکمل طور پر نظر انداز ہوتی ہیں۔) ورڈپریس بالکل درست فائل لکھ دے تب بھی اس کا کوئی اثر نہیں ہوتا۔ rewrite rules کو ضرورت ہوتی ہے AllowOverride FileInfo (یا All) کی، جسے شاید آپ کے ہوسٹ کو تبدیل کرنا پڑے۔
  • آپ کے مستقل لنکس سادہ (Plain) پر سیٹ ہیں۔ سادہ یو آر ایلز کو rewrite rules کی ضرورت نہیں ہوتی، اس لیے ورڈپریس ان کے لیے فائل نہیں بناتا۔

اسے دستی طور پر کیسے بحال کریں

اگر پوسٹس اور صفحات 404 دیں جبکہ ہوم پیج چلتا رہے تو سب سے پہلے غائب یا خراب .htaccess کو چیک کریں۔ اسے دو مرحلوں میں ٹھیک کریں۔

1. پہلے ایک کلک والا حل آزمائیں۔ wp-admin میں سیٹنگز > مستقل لنکس کھولیں، پھر کچھ تبدیل کیے بغیر تبدیلیاں محفوظ کریں پر کلک کریں۔ اگر ورڈپریس فائل میں لکھ سکتا ہے تو یہ اسے دوبارہ بنا دے گا۔ اگر نہیں لکھ سکتا تو اسکرین ایرر اور ضروری رولز دکھائے گی۔

2. اگر اس سے ٹھیک نہ ہو تو فائل دستی طور پر بنائیں۔ FTP/SFTP یا اپنے ہوسٹ کے فائل مینیجر سے جڑیں اور اپنی سائٹ کے روٹ فولڈر میں جائیں، جو عام طور پر wp-admin والا فولڈر ہوتا ہے۔ دیکھیں کہ .htaccess موجود ہے یا نہیں۔ اس کا نام نقطے سے شروع ہوتا ہے، اس لیے کچھ فائل مینیجر اسے ڈیفالٹ طور پر چھپاتے ہیں؛ “چھپی ہوئی فائلیں دکھائیں” آن کریں۔

  • اگر غائب ہو تو بالکل .htaccess نام کی نئی فائل بنائیں (نہ .txt، نہ نقطے سے پہلے کچھ)۔
  • وہ رولز پیسٹ کریں جو ورڈپریس نے دکھائے، یا اس گائیڈ کے شروع والا ڈیفالٹ بلاک۔ سب فولڈر انسٹال میں RewriteBase اور آخری رول کو اس کے مطابق بدلیں۔
  • محفوظ کریں، پھر تصدیق کے لیے کسی پوسٹ کا مستقل لنک دوبارہ لوڈ کریں۔

اگر پھر بھی 404 آئے تو ہو سکتا ہے .htaccess نظر انداز ہو رہی ہو۔ اپنے ہوسٹ سے AllowOverride چیک کریں، کیونکہ یہ بند ہو تو Apache درست فائل کو بھی نظر انداز کرتا ہے۔

آپ کے اپنے رولز اور ورڈپریس کا بلاک

کوئی پلگ ان یا دستی ترمیم اپنے رولز شامل کر سکتی ہے، جیسے ری ڈائریکٹس، ہاٹ لنک پروٹیکشن یا کیش ہیڈرز۔ انہیں ورڈپریس کے بلاک سے باہر اور اس کے اوپر رکھیں تاکہ وہ اس کے سب کچھ پکڑنے والے رول سے پہلے چلیں:

# آپ یا کسی پلگ ان کے شامل کردہ رولز: ورڈپریس مارکرز کے اوپر
<FilesMatch "\.(jpg|jpeg|png|gif)$">
    # مثال: ہاٹ لنک پروٹیکشن، کیش رولز وغیرہ۔
</FilesMatch>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# BEGIN WordPress اور # END WordPress کے درمیان رکھی گئی ہر چیز اگلی بار ورڈپریس کے فائل اپ ڈیٹ کرنے پر ضائع ہو جاتی ہے، اور اس کے لیے مستقل لنکس اسکرین لوڈ کرنا کافی ہے۔ مارکرز سے پہلے اور بعد کی لائنیں برقرار رہتی ہیں۔ خاص طور پر ری ڈائریکٹس کے لیے دیکھیں ورڈپریس .htaccess ری ڈائریکٹ رولز کا درست طریقہ، جہاں بتایا گیا ہے کہ وہ کہاں رکھے جائیں اور لوپس سے کیسے بچا جائے۔

فائل میں ترمیم کے فوراً بعد آنے والا 500 Internal Server Error اسی چیز کی طرف اشارہ کرتا ہے جو آپ نے ابھی بدلی۔ Apache کی دستاویزات کہتی ہیں کہ ایرر لاگ میں غالباً غیر اجازت یافتہ ہدایت یا سنٹیکس کی غلطی کا نام ہوگا۔ پرانے ٹیوٹوریل سے کاپی کیے گئے رولز ایسا کر سکتے ہیں: جب تک mod_access_compat لوڈ نہ ہو، Order Apache 2.4 پر غلط کمانڈ ہے۔ سائٹ واپس لانے کے لیے ترمیم واپس لیں، پھر ایرر لاگ پڑھیں۔

ڈیفالٹ بلاک سے آگے

ڈیفالٹ بلاک صرف مستقل لنکس کی روٹنگ اور Authorization ہیڈر سنبھالتا ہے۔ حساس فائلوں تک رسائی سخت کرنے کے لیے، جیسے /uploads میں PHP چلانا روکنا یا wp-config.php کی براہ راست درخواستیں مسترد کرنا، دیکھیں ورڈپریس .htaccess سیکیورٹی رولز جو واقعی مدد کرتے ہیں۔ اگر مستقل لنکس کسی اور وجہ سے 404 دے رہے ہوں، جیسے غلط لنک اسٹرکچر، پرانے رولز پیش کرنے والی کیش لیئر یا ملٹی سائٹ سب ڈائریکٹری کا ٹکراؤ، تو ورڈپریس کے مستقل لنکس کام نہیں کر رہے باقی وجوہات بتاتی ہے۔

اکثر پوچھے جانے والے سوالات

ورڈپریس کی ڈیفالٹ .htaccess فائل کیا ہے؟ یہ وہ RewriteEngine بلاک ہے جو ورڈپریس آپ کی سائٹ کے روٹ میں موجود .htaccess فائل میں # BEGIN WordPress اور # END WordPress کے درمیان لکھتا ہے۔ یہ Authorization ہیڈر کو PHP تک پہنچاتا ہے اور ہر اس درخواست کو index.php کی طرف بھیجتا ہے جو حقیقی فائل یا فولڈر نہ ہو۔

ورڈپریس کا درست ڈیفالٹ .htaccess کوڈ کیا ہے؟ RewriteEngine On، ایک رول جو Authorization ہیڈر کو PHP تک پہنچاتا ہے، RewriteBase /، index.php کو گزرنے دینے والا ایک رول، دو شرطیں جو جانچتی ہیں کہ درخواست حقیقی فائل یا فولڈر نہیں، اور ایک آخری رول جو باقی سب کچھ index.php کی طرف بھیجتا ہے۔ مکمل بلاک اس گائیڈ کے شروع میں ہے۔

ہوم پیج کے سوا میری تمام پوسٹس 404 کیوں دیتی ہیں؟ Apache پر غائب یا خراب .htaccess فائل یہی صورت پیدا کرتی ہے۔ سرور rewrite rules کے بغیر بھی ہوم پیج تلاش کر لیتا ہے۔ ہر دوسرے مستقل لنک کو index.php تک پہنچنے کے لیے ان رولز کی ضرورت ہوتی ہے، اس لیے ان کے بغیر Apache ایک ایسی فائل ڈھونڈتا ہے جو موجود نہیں اور 404 واپس کرتا ہے۔

کیا ورڈپریس .htaccess کو خودکار طور پر دوبارہ بناتا ہے؟ ہاں، mod_rewrite والے Apache یا LiteSpeed پر، بشرطیکہ خوبصورت مستقل لنکس آن ہوں اور ورڈپریس وہاں لکھ سکے۔ اسے شروع کرنے کے لیے سیٹنگز > مستقل لنکس کھولنا کافی ہے۔ غائب فائل کے لیے فولڈر کا قابل تحریر ہونا ضروری ہے، اور موجود فائل کا خود قابل تحریر ہونا ضروری ہے۔ ورنہ اسکرین ایک ایرر دکھاتی ہے، ساتھ وہ رولز بھی جو آپ کو دستی طور پر پیسٹ کرنے ہوں گے۔

nginx میں ورڈپریس کی .htaccess فائل کیوں نہیں ہوتی؟ nginx میں Apache کی .htaccess جیسی ڈائریکٹری کی سطح والی کنفیگریشن فائل نہیں ہوتی۔ یہی روٹنگ nginx کی سرور کنفیگریشن میں try_files رول کی صورت میں لکھی جاتی ہے، جس میں ایڈمنسٹریٹر کو ترمیم کرنی پڑتی ہے کیونکہ ورڈپریس اسے تبدیل نہیں کر سکتا۔

مستقل لنکس محفوظ کرنے کے بعد میری .htaccess کیوں خراب ہو گئی؟ دیکھیں کہ کہیں کوئی کسٹم رول # BEGIN WordPress اور # END WordPress مارکرز کے اندر تو نہیں رکھا گیا۔ فائل اپ ڈیٹ کرتے وقت ورڈپریس ان کے درمیان کی ہر چیز بدل دیتا ہے، اس لیے وہ رول ضائع ہو جاتا ہے۔ کسٹم رولز مارکرز کے اوپر رکھیں۔

ذرائع


مفت ورڈپریس .htaccess جنریٹر سے ایک صاف اور درست .htaccess بنائیں، جس میں ڈیفالٹ مستقل لنک بلاک کے ساتھ صرف وہ سیکیورٹی یا ری ڈائریکٹ رولز ہوں جن کی آپ کو واقعی ضرورت ہے۔

FAQ

سوالات

ورڈپریس کی ڈیفالٹ .htaccess فائل کیا ہے؟

یہ وہ RewriteEngine بلاک ہے جو ورڈپریس آپ کی سائٹ کے روٹ میں موجود .htaccess فائل میں # BEGIN WordPress اور # END WordPress کے درمیان لکھتا ہے۔ یہ Authorization ہیڈر کو PHP تک پہنچاتا ہے اور ہر اس درخواست کو index.php کی طرف بھیجتا ہے جو حقیقی فائل یا فولڈر نہ ہو۔

ورڈپریس کا درست ڈیفالٹ .htaccess کوڈ کیا ہے؟

RewriteEngine On، ایک رول جو Authorization ہیڈر کو PHP تک پہنچاتا ہے، RewriteBase /، index.php کو گزرنے دینے والا ایک رول، دو شرطیں جو جانچتی ہیں کہ درخواست حقیقی فائل یا فولڈر نہیں، اور ایک آخری رول جو باقی سب کچھ index.php کی طرف بھیجتا ہے۔ مکمل بلاک اس گائیڈ کے شروع میں ہے۔

ہوم پیج کے سوا میری تمام پوسٹس 404 کیوں دیتی ہیں؟

Apache پر غائب یا خراب .htaccess فائل یہی صورت پیدا کرتی ہے۔ سرور rewrite rules کے بغیر بھی ہوم پیج تلاش کر لیتا ہے۔ ہر دوسرے مستقل لنک کو index.php تک پہنچنے کے لیے ان رولز کی ضرورت ہوتی ہے، اس لیے ان کے بغیر Apache ایک ایسی فائل ڈھونڈتا ہے جو موجود نہیں اور 404 واپس کرتا ہے۔

کیا ورڈپریس .htaccess کو خودکار طور پر دوبارہ بناتا ہے؟

ہاں، mod_rewrite والے Apache یا LiteSpeed پر، بشرطیکہ خوبصورت مستقل لنکس آن ہوں اور ورڈپریس وہاں لکھ سکے۔ اسے شروع کرنے کے لیے سیٹنگز > مستقل لنکس کھولنا کافی ہے۔ غائب فائل کے لیے فولڈر کا قابل تحریر ہونا ضروری ہے، اور موجود فائل کا خود قابل تحریر ہونا ضروری ہے۔ ورنہ اسکرین ایک ایرر دکھاتی ہے، ساتھ وہ رولز بھی جو آپ کو دستی طور پر پیسٹ کرنے ہوں گے۔

nginx میں ورڈپریس کی .htaccess فائل کیوں نہیں ہوتی؟

nginx میں Apache کی .htaccess جیسی ڈائریکٹری کی سطح والی کنفیگریشن فائل نہیں ہوتی۔ یہی روٹنگ nginx کی سرور کنفیگریشن میں try_files رول کی صورت میں لکھی جاتی ہے، جس میں ایڈمنسٹریٹر کو ترمیم کرنی پڑتی ہے کیونکہ ورڈپریس اسے تبدیل نہیں کر سکتا۔

مستقل لنکس محفوظ کرنے کے بعد میری .htaccess کیوں خراب ہو گئی؟

دیکھیں کہ کہیں کوئی کسٹم رول # BEGIN WordPress اور # END WordPress مارکرز کے اندر تو نہیں رکھا گیا۔ فائل اپ ڈیٹ کرتے وقت ورڈپریس ان کے درمیان کی ہر چیز بدل دیتا ہے، اس لیے وہ رول ضائع ہو جاتا ہے۔ کسٹم رولز مارکرز کے اوپر رکھیں۔