डॉक्स / .htaccess — दो modes, और आपको कौन-सा चाहिए

.htaccess — दो modes, और आपको कौन-सा चाहिए

अगर आपने .htaccess में कुछ जोड़ा और साइट ऐसे बर्ताव कर रही है मानो आपने न जोड़ा हो, तो पहले यह पढ़ें। कुछ टूटा नहीं है — आपकी साइट शायद उस mode में है जो .htaccess को पढ़ने के बजाय translate करती है, और translation आम rules को कवर करता है, सबको नहीं।

Domains → Apache / .htaccess खोलें। card के ऊपर badge बताता है कि यह साइट किस mode में है।

दो modes

Translated (default)। आपकी .htaccess तेज़ web server के अपने rules में बदल दी जाती है। आम directives काम करते हैं। जो कुछ converter दोबारा नहीं बना सकता उसे छोड़ दिया जाता है, और उसे card के नीचे table में आपके लिए सूचीबद्ध किया जाता है। file में एक बदलाव तभी लागू होता है जब आप Translate now दबाएँ — file हर request पर नहीं पढ़ी जाती।

Full .htaccess। आपकी file सीधे पढ़ी जाती है, ठीक वैसे जैसे वह cPanel पर थी। Apache जो हर directive support करता है वह काम करता है, और एक बदलाव अगली request पर ही लागू हो जाता है। translated mode से थोड़ा धीमा, क्योंकि हर request एक अतिरिक्त step से गुज़रती है।

आपको कौन-सा चाहिए

Translated पर बने रहें अगर आपकी .htaccess एक WordPress permalink block, एक force-HTTPS redirect, एक www/non-www redirect, एक Redirect line, एक directory listing switch, या basic-auth protection है। यह अधिकांश साइटें हैं, और यही तेज़ रास्ता है।

Full .htaccess चालू करें अगर:

  • card के नीचे table उन directives को सूचीबद्ध करता है जो आपको सचमुच चाहिए,
  • आप .htaccess से PHP values सेट करते हैं (php_value, php_flag) — ये translated mode में कभी लागू नहीं होतीं, चाहे file कुछ भी कहे,
  • आप SetEnv, SetEnvIf, RequestHeader, AddType, AddHandler, या ऐसी conditions वाले rewrite rules उपयोग करते हैं जिनके बारे में converter चेतावनी देता है,
  • या आप कहीं और से एक साइट ला रहे हैं और उसकी .htaccess को बिलकुल audit ही नहीं करना चाहते।

पूरा support चुनने का थोड़ी latency के अलावा कोई दंड नहीं। कोई शुल्क नहीं, बाद में कोई अतिरिक्त step नहीं, और कोई configuration नहीं।

Table पढ़ना

mode card के नीचे, हर row एक ऐसा directive है जिसे converter दोबारा नहीं बना सका, उसके line number और उसके बारे में क्या करना है के साथ।

  • Translated mode में, बटन के ऊपर नोट बताता है कि उनमें से कितने अभी नज़रअंदाज़ किए जा रहे हैं। वे rules नहीं चल रहे।
  • Full .htaccess mode में, वही सूची दिखती है, पर नोट कहता है कि वे काम कर रहे हैं — सूची केवल तभी मायने रखती है जब आप कभी वापस switch करें।

अगर table खाली है, तो आपकी .htaccess में कुछ भी नहीं खोया जा रहा, और translated mode file जो कुछ माँगती है वह सब कर रहा है।

स्विच करना

एक बटन। translated mode में यह Turn on full .htaccess support पढ़ता है; full mode में यह Switch to translated (faster) पढ़ता है।

  • इसमें कुछ सेकंड लगते हैं। जब यह काम कर रहा होता है card कहता है Applying — this can take a few seconds…।
  • आपकी साइट down नहीं होती। नया रास्ता पुराने के हटाए जाने से पहले लगा दिया जाता है, दोनों दिशाओं में, और अगर कोई हिस्सा विफल होता है तो दोनों ओर जैसे थे वैसे वापस रख दिए जाते हैं।
  • account के बारे में और कुछ नहीं बदलता। आपकी files, आपका document root, आपका PHP version, आपका certificate और आपका HTTPS सब बिलकुल जैसे हैं वैसे रहते हैं। आपकी साइट का PHP दोनों modes में आपके अपने user के रूप में ही चलता है, सर्वर पर हर दूसरे account से अलग-थलग।
  • आपके access log में visitor addresses असली visitor addresses ही रहते हैं।
  • आप किसी भी समय, जितनी बार चाहें, वापस switch कर सकते हैं।

cPanel से आना

आपको कुछ नहीं करना। जब कोई account एक cPanel backup से import होता है, तो importer मिली .htaccess files को translate करता है, और अगर कोई directive translate नहीं हो सकता तो account को तुरंत full .htaccess mode में डाल दिया जाता है। साइट पहली request से ही वैसे बर्ताव करती है जैसे वह पुराने सर्वर पर करती थी।

Import report इसे दो lines में दिखाती है: कितने rules translate हुए और कितनों को review चाहिए, फिर क्या mode बदला गया।

जिन साइटों को कभी कुछ असामान्य की ज़रूरत नहीं पड़ी वे तेज़ translated रास्ते पर रहती हैं।

जब कुछ ग़लत दिखे

file edit करने के बाद भी एक rule कुछ नहीं करता, और आप translated mode में हैं। Translate now दबाएँ। इस mode में file तब पढ़ी जाती है जब आप कहें, हर request पर नहीं।

पूरा support चालू करते ही हर पेज HTTP 500 जवाब देता है। वापस switch करें — बटन आपको वहीं रख देता है जहाँ आप थे — और अपने होस्टिंग provider को बताएँ कि क्या हुआ। इसका मतलब है कि उस सर्वर पर Apache में एक module गायब है जो आपकी file को चाहिए (RewriteEngine On आम है)। यह एक server-side setting है, ऐसी चीज़ नहीं जिसे आप अपने account से ठीक कर सकें।

हर पेज 502 जवाब देता है और आप full mode में हैं। सर्वर पर Apache process नहीं चल रही। translated mode की साइटें अप्रभावित हैं, जो अपने provider को बताने लायक एक उपयोगी बात है।

switch Apache ports के बारे में एक message के साथ मना कर दिया जाता है। सर्वर के इस mode के लिए allocate किए slots ख़त्म हो गए हैं। केवल आपका provider इसे बढ़ा सकता है।

Apache / .htaccess tile आपके पैनल में है ही नहीं। या तो आपका होस्टिंग प्लान इसमें शामिल नहीं है, या सर्वर Apache उपलब्ध रखकर सेट नहीं किया गया था। अपने provider से पूछें कि कौन-सा।

Full mode क्या नहीं बदलता

  • आपका certificate। HTTPS Apache के request देखने से पहले ही terminate हो जाता है, इसलिए issuing और renewal अछूते रहते हैं।
  • Isolation। PHP दोनों modes में आपके account के अपने user के रूप में चलता है।
  • आपके bandwidth आँकड़े और visitor statistics।
  • सर्वर पर कोई भी दूसरा account। यह setting केवल आपकी है — यह प्रति account तय होती है, प्रति सर्वर नहीं।