.htaccess - कैसे "www।" एक सामान्य तरीके से?


102

यह बदल जाएगा domain.comकरने के लिए www.domain.com:

# Force the "www."
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

मैं "डोमेन" भाग को कैसे बदलूं ताकि यह किसी भी डोमेन पर काम करे ?

जवाबों:


249

मैं इस नियम का उपयोग करूंगा:

RewriteEngine On
RewriteCond %{HTTP_HOST} !=""
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

पहली शर्त यह जांचती है कि होस्ट मान रिक्त नहीं है (HTTP / 1.0 के मामले में); दूसरा जाँच करता है कि होस्ट मान के साथ शुरू नहीं होता है www.; HTTPS के लिए तीसरे चेक ( %{HTTPS}या तो है onया offहै, तो %{HTTPS}sया तो है onsया offsऔर के मामले में मिलान किया जाता है)। तब का प्रतिस्थापन भाग पूर्ण URL में सूचना भागों को मिला देता है।onssRewriteRule


31
यह समाधान केवल तभी काम करता है जब आप www.yourdomain.com पर सभी उप-डोमेन चाहते हैं। यदि आप केवल www को बाध्य करना चाहते हैं, तो आपको दूसरी पंक्ति को अपडेट करना चाहिए:RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
जेरेड पॉमरंकी

2
मैं अपने किसी भी उपडोमेन को www.mydomain.com के लिए प्रश्न में पोस्ट किए गए नियम का उपयोग करके प्राप्त नहीं करता ...
lol

3
बहुत चालाक! मुझे पसंद है कि आपने कैप्चर समूह में एक "एस" वापस करने के लिए HTTPS चेक को मजबूर किया, जिसे आपने निम्नलिखित पंक्ति पर उपयोग किया था। बहुत ही सुंदर
code_monk

एक सार्वभौमिक उत्तर की तरह लगता है, HTTP और सामान्य प्रोटोकॉल को शामिल करता है, एक आकर्षण की तरह काम करता है।
क्लेन डिसिल्वा

1
धन्यवाद! मैं RewriteEngine Onइसे पूरा करने के लिए पहली पंक्ति के रूप में जोड़ूंगा, क्योंकि इससे 500 सर्वर त्रुटि हो सकती है अगर यह कॉपी-पेस्ट किया जाए।
रायन


5

यदि आप अपनी साइट के सभी गैर-www अनुरोधों को www संस्करण में पुनर्निर्देशित करना चाहते हैं, तो आपको केवल अपनी .htaccess फ़ाइल में निम्न कोड जोड़ना होगा:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

3

यह उप-डोमेन के साथ काम नहीं करेगा।

domain.com सही ढंग से www.domain.com पर पुनर्निर्देशित हो जाता है

परंतु

images.domain.com www.images.domain.com पर पुनर्निर्देशित हो जाता है

यदि उपडोमेन "www नहीं" है, तो जाँचने के बजाय, जाँच करें कि क्या दो बिंदु हैं:

RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

मुझे यह समाधान पसंद है। वैसे भी TLDs .co.uk के साथ एक ही बात को पूरा करने के लिए?
टायलरएसएन

1
@iUseMagentoNow उदाहरण के लिए, केवल डॉट्स बढ़ाएँ: RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\.(.*)\. [NC](सख्ती से बोलना, आपका TLD अभी भी है .ukऔर आपका डोमेन है something.co।)
mirabilos

.co इस मामले में एक दूसरे स्तर का डोमेन है और वास्तव में आपके डोमेन का हिस्सा नहीं है, जहां .uk एक देश कोड TLD है। ईमानदार होने के लिए, होस्टिंग उद्योग में काम करने और डोमेन नाम के लिए नए स्वरूपों को देखने के लिए मैं वर्तमान TLD प्रारूपों को आधिकारिक उपयोगों के अलावा किसी अन्य चीज़ के लिए स्थायी देख सकता हूं। शासन, संगठन आदि निकट भविष्य में जब आप मौजूदा मानदंडों के समान मूल्य के लिए fred.bloggs जैसे fqdn को पंजीकृत कर सकते हैं, तब व्यक्तिगत वेब डीएनएस के दृष्टिकोण से बहुत अलग दिखाई देगा।
क्रिस

1

निम्नलिखित को किसी भी अनुरोध के लिए 'www' को उपसर्ग करना चाहिए, जिसमें एक नहीं है, और नए URI के लिए संपादित अनुरोध को पुनर्निर्देशित करें।

RewriteCond "%{HTTP_HOST}" "!^www\."         [NC]
RewriteCond "%{HTTP_HOST}" "(.*)"
RewriteRule "(.*)"         "http://www.%1$1" [R=301,L]

1
RewriteEngine On

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R=301]

यह उप-डोमेन example.comको www.example.comछोड़कर पुनर्निर्देशित करता है ।


मेरे लिए यह www.example.com www.www.example.com haha ​​को भेजना प्रतीत होता है
अल्बर्ट रेनशॉ

@ अल्बर्ट शायद यह आपके ब्राउज़र कैश के कारण है। अपना कैश और पुन: प्रयास करें।
अमित वर्मा

तुम सही हो! मैं सिर्फ गुप्त (क्रोम) में भागा और यह ठीक काम किया, धन्यवाद!
अल्बर्ट रेनशॉ

1
मुझे यह सामान्य नियम बहुत पसंद है। लेकिन यह domain.co.uk के लिए काम नहीं करता है क्योंकि इसमें पहले से ही दो डॉट्स हैं। इसे .co.uk के लिए भी काम करने के लिए इस नियम को कैसे बदला जा सकता है?
सच्चा वोर्बेक

1
.Co.uk और अन्य उप-केंद्रों के लिए यह काम करता है: ^ ([^।] + \ _। टाइप किए गए टौर ( wiki.mozilla.org/TLD_List ) जैसे es कि डोमेन की अनुमति देते हैं और साथ ही domain.com.es भी। जोड़ना | regex के लिए domain.es के साथ-साथ www.domain.es से भी मेल खाना चाहिए जो यहाँ नहीं है। इस मिश्रित टाइप-उप-सिद्धांतों को संभालने का एक तरीका ढूंढना है
साचा

0

यह एक पुराना सवाल है, और ऐसा करने के कई अलग-अलग तरीके हैं। सबसे पूर्ण उत्तर, IMHO, यहाँ पाया जाता है: https://gist.github.com/vielhuber/f2c6bdd1ed9024023fe4 । (यहाँ कोड बनाना और प्रारूपित करना मेरे लिए काम नहीं आया)


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.