apache - tvs - अपाचे बाइक नई मॉडल




अपाचे को www से www तक रीडायरेक्ट करें (14)

Www.tld को www पर रीडायरेक्ट करें।

निम्नलिखित पंक्तियों को या तो अपाचे निर्देशों में या .htaccess फ़ाइल में जोड़ा जा सकता है:

RewriteEngine on    
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • अन्य सुडोमेन अभी भी काम कर रहे हैं।
  • लाइनों को समायोजित करने की कोई ज़रूरत नहीं है। बस उन्हें सही जगह पर कॉपी / पेस्ट करें।

यदि आप vhost को संशोधित करते हैं तो अपाचे परिवर्तनों को लागू करना न भूलें।

(डिफ़ॉल्ट Drupal7 .htaccess पर आधारित है लेकिन कई मामलों में काम करना चाहिए)

मेरे पास ऐसी वेबसाइट है जो गैर-www से www तक रीडायरेक्ट प्रतीत नहीं होती है।

मेरा अपाचे कॉन्फ़िगरेशन निम्नानुसार है:

RewriteEngine On
### re-direct to www
RewriteCond %{http_host} !^www.example.com [nc]
RewriteRule ^(.*)$ http://www.example.com/$1 [r=301,nc] 

मैं क्या खो रहा हूँ?


अपनी URL वेबसाइट से www को हटाने के लिए इस कोड का उपयोग अपनी .htaccess फ़ाइल में करें:

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

अपनी वेबसाइट URL में www को मजबूर करने के लिए .htaccess पर इस कोड का उपयोग करें

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^YourSite.com$
RewriteRule ^(.*)$ http://www.yourSite.com/$1 [R=301]
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule ^(([^/]+/)*[^./]+)$ /$1.html [R=301,L]

जहां YourSite.com को आपके URL बदला जाना चाहिए।


एकाधिक vhosts का उपयोग करते समय मुझे सर्वरअलीस का उपयोग करने के लिए यह आसान (और अधिक उपयोगी) मिला।

<VirtualHost x.x.x.x:80>
    ServerName www.example.com
    ServerAlias example.com
    ....
</VirtualHost>

यह https vhosts के साथ भी काम करता है।


गैर-www => www और विपरीत www => गैर-www दोनों के लिए पुनर्निर्देशन कोड। .htaccess फ़ाइल में कोई हार्डकोडिंग डोमेन और स्कीम नहीं। तो मूल डोमेन और http / https संस्करण संरक्षित किया जाएगा।

अपाचे 2.4 और समाचार

गैर-डब्ल्यूडब्ल्यूडब्ल्यू => डब्ल्यूडब्ल्यूडब्ल्यू:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

डब्ल्यूडब्ल्यूडब्ल्यू => गैर-डब्ल्यूडब्ल्यूडब्ल्यू:

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

नोट: अपाचे 2.2 पर काम नहीं कर रहा है, जहां% {REQUEST_SCHEME} उपलब्ध नहीं है। Apache 2.2 के साथ संगतता के लिए नीचे दिए गए कोड का उपयोग करें या निश्चित http / https के साथ% {REQUEST_SCHEME} को प्रतिस्थापित करें।

अपाचे 2.2 और समाचार

गैर-डब्ल्यूडब्ल्यूडब्ल्यू => डब्ल्यूडब्ल्यूडब्ल्यू:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

... या छोटा संस्करण ...

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

डब्ल्यूडब्ल्यूडब्ल्यू => गैर-डब्ल्यूडब्ल्यूडब्ल्यू:

RewriteEngine On

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

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

... छोटा संस्करण संभव नहीं है क्योंकि% N केवल अंतिम रिवाइटकंड से उपलब्ध है ...


मुझे बस एक ही समस्या है। लेकिन इसके साथ हल किया

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

यह नियम गैर-www को www पर रीडायरेक्ट कर रहा है।

और यह नियम www को गैर-www पर रीडायरेक्ट करने के लिए

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

http://dense13.com/blog/2008/02/27/redirecting-non-www-to-www-with-htaccess/ से देखें


मेरे पास एक WP मल्टीसाइट पर एक समान कार्य था, जहां पुनर्निर्देशन नियम सामान्य होना था (किसी दिए गए डोमेन के लिए मैं नेटवर्क में जोड़ूंगा)। मैंने पहले डोमेन (पार्क किए गए डोमेन) में वाइल्डकार्ड जोड़ने का हल किया। ध्यान दें । .com के बाद

CNAME * domain.com.

और फिर मैंने अपनी मल्टीसाइट के रूट पर .htaccess फ़ाइल में निम्न पंक्तियां जोड़ दीं। मुझे लगता है कि यह किसी भी साइट के लिए काम करेगा।

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

उम्मीद है कि यह मदद करेगा।

ps। यदि आप www से www तक रीडायरेक्ट करना चाहते हैं, तो अंतिम पंक्ति को बदलें

RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

यदि आप अपाचे 2.4 का उपयोग कर रहे हैं, तो पुनः लिखने वाले अपाचे मॉड्यूल को सक्षम करने की आवश्यकता के बिना आप इस तरह कुछ उपयोग कर सकते हैं:

# non-www to www
<If "%{HTTP_HOST} = 'domain.com'">
  Redirect 301 "/" "http://www.domain.com/"
</If>

यदि विभिन्न ServerName साथ दो <VirtualHost *:80> ब्लॉक के उपरोक्त समाधान का उपयोग कर रहे हैं ...

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost *:80>
    ServerName www.example.com
</VirtualHost>

... तो आपको नाम NameVirtualHost On सेट करना होगा

यदि आप ऐसा नहीं करते हैं, तो अपाचे ब्लॉक को अलग करने के लिए अलग-अलग ServerName का उपयोग करने की अनुमति नहीं देता है, इसलिए आपको यह त्रुटि संदेश मिलता है:

[warn] _default_ VirtualHost overlap on port 80, the first has precedence

... और या तो कोई पुनर्निर्देशन नहीं होता है, या आपके पास पहले से डाले गए ब्लॉक के आधार पर एक अनंत पुनर्निर्देशन लूप होता है।


यह मेरे लिए काम करता है:

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

अपाचे में एक अनंत रीडायरेक्ट लूप से बचने के लिए www सबडोमेन में सभी डोमेन को रीडायरेक्ट करते समय www सबडोमेन को बाहर करने के लिए मैं लुक-आगे पैटर्न (?!www.domain.com) का उपयोग करता हूं।


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

इस सही काम की जांच करें


मैं जिस कोड का उपयोग करता हूं वह है:

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

Redirect permanent (या यह समस्या क्यों पैदा कर सकता है) का उपयोग न करें

यदि कोई मौका है कि आप बाद में सबडोमेन जोड़ देंगे, तो redirect permanent उपयोग न करें।

क्योंकि यदि किसी क्लाइंट ने सबडोमेन का उपयोग किया है जिसे वर्चुअलहोस्ट के रूप में पंजीकृत नहीं किया गया था, तो वह बाद में पंजीकृत होने पर भी इस सबडोमेन तक नहीं पहुंच सकता है।

redirect permanent HTTP 301 Moved Permanently को क्लाइंट (ब्राउज़र) पर HTTP 301 Moved Permanently से HTTP 301 Moved Permanently जाता है और उनमें से बहुत से इस प्रतिक्रिया को हमेशा के लिए कैश करते हैं (जब तक कैश साफ़ नहीं किया जाता है]। तो उस सबडोमेन का उपयोग हमेशा सर्वर पर अनुरोध किए बिना www। *** पर स्वत: निर्देशित होगा।

देखें कि ब्राउज़र कितने समय तक HTTP 301s कैश करते हैं?

तो बस Redirect उपयोग करें

<VirtualHost *:80>
  ServerName example.com

  Redirect / http://www.example.com/
</VirtualHost>

Apache.org - mod_rewrite का उपयोग न करने पर

Apache.org - कैनोनिकल होस्टनाम


<VirtualHost *:80>
    ServerAlias example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

<VirtualHost *:80>
    ServerAlias example.com
    RedirectMatch permanent ^/(.*) http://www.example.com/$1
</VirtualHost>

यह न केवल डोमेन नाम बल्कि आंतरिक पृष्ठों को भी पुनर्निर्देशित करेगा। जैसा ...

example.com/abcd.html ==> www.example.com/abcd.html
example.com/ab/cd.html?ef=gh ==> www.example.com/ab/cd.html?ef=gh





no-www