apache - सामान्य एचटीएसीएस www को गैर-www पर रीडायरेक्ट करता है




mod-rewrite url-rewriting (14)

Www URL को नो-www पर रीडायरेक्ट करने के नियम यहां दिए गए हैं:

#########################
# redirect www to no-www
#########################

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

Www पर नो-www यूआरएल को रीडायरेक्ट करने के नियम यहां दिए गए हैं:

#########################
# redirect no-www to www
#########################

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

ध्यान दें कि मैंने क्वेरी स्ट्रिंग से बचने से अपाचे को रोकने के लिए NE ध्वज का उपयोग किया था। इस ध्वज के बिना, अपाचे अनुरोधित यूआरएल http://www.example.com/?foo%20bar को http://www.example.com/?foo%2250bar बदल देगा

https://code.i-harness.com

मैं example.com www.example.com को रीडायरेक्ट करना चाहता हूं। निम्नलिखित htaccess कोड यह होता है:

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

लेकिन, क्या डोमेन नाम को हार्डकोड किए बिना इसे सामान्य फैशन में करने का कोई तरीका है?


https के साथ www www

RewriteEngine on

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

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

इसे इस्तेमाल करे:

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

यदि मेजबान www के साथ शुरू होता है, तो हम पूरे होस्ट को यूआरएल की शुरुआत में चिपकते हैं, फिर "www।"


उन लोगों के लिए जिन्हें 'www' उपसर्ग के बिना पूरी साइट तक पहुंचने में सक्षम होना चाहिए।

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

मारे सुनिश्चित करें कि आप इसे निम्न फ़ाइल में जोड़ दें

/site/location/.htaccess 

एचटीएसीएएस रीडायरेक्ट के बारे में बहुत सारी गलत जानकारी हो सकती है, मुझे लगता है। सबसे पहले, सुनिश्चित करें कि आपकी साइट अपाचे का उपयोग करके यूनिक्स पर चल रही है और यदि आप इस कोड को काम करने की अपेक्षा करते हैं तो Windows होस्ट पर नहीं।

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]

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

(सुनिश्चित करें कि टेक्स्ट की प्रत्येक पंक्ति के बीच कोई पंक्ति रिक्त स्थान नहीं है, हालांकि; मैंने लाइनों के बीच एक अतिरिक्त जगह जोड़ दी है, इसलिए यह इस विंडो में ठीक है।)

यह कोड का एक स्निपेट है जिसका उपयोग आपकी साइट के www संस्करण को http: // संस्करण में निर्देशित करने के लिए किया जा सकता है। ऐसे अन्य समान कोड भी हैं जिनका उपयोग भी किया जा सकता है।


काम करने के लिए मुझे एकमात्र रास्ता मिला ...

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

पूर्ण जेनेरिक डब्ल्यूडब्ल्यूडब्ल्यू हैंडलर, http / https

मुझे पूरा जवाब नहीं मिला। मैं डब्ल्यूडब्ल्यूडब्ल्यू समावेशन को संभालने के लिए इसका उपयोग करता हूं।

  1. सामान्य। डोमेन जानकारी की आवश्यकता नहीं है।
  2. प्राथमिक डोमेन पर डब्ल्यूडब्ल्यूडब्ल्यू फोर्स: www.domain.com
  3. उप डोमेन पर WWW को हटाता है: sub.domain.com
  4. HTTP / HTTPS स्थिति को संरक्षित करता है।
  5. डोमेन / उप-डोमेन के लिए व्यक्तिगत कुकीज़ की अनुमति देता है

कृपया मुझे बताएं कि यह कैसे काम करता है या अगर मैंने एक छेड़छाड़ छोड़ी है।

RewriteEngine On
RewriteBase /

# Force WWW. when no subdomain in host
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Remove WWW. when subdomain(s) in host     
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|off [NC]
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)(.+\.)(.+\.)(.+)$ [NC]
RewriteRule ^ %1%3%4%5%{REQUEST_URI} [R=301,L]

मुझे यकीन नहीं है कि आप www को क्यों हटाना चाहते हैं। लेकिन रिवर्स संस्करण होगा:

# non-www.* -> www.*, if subdomain exist, wont work
RewriteCond %{HTTP_HOST} ^whattimein\.com
RewriteRule ^(.*)$ http://www.whattimein.com/$1 [R=permanent,L]

और इस स्क्रिप्ट का लाभ यह है: यदि आपके पास test.whattimein.com या किसी अन्य (विकास / परीक्षण के लिए वातावरण) जैसे कुछ हैं, तो यह यू को मूल वातावरण में रीडायरेक्ट नहीं करेगा।


यदि आप www को मजबूर कर रहे हैं। यूआरएल में या एसएसएल प्रोटोटॉल को मजबूर करना, फिर htaccess फ़ाइल में संभावित विविधताओं का उपयोग करने का प्रयास करें, जैसे कि:

RewriteEngine On
RewriteBase /

### Force WWW ###

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

## Force SSL ###

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://example.com/$1 [R,L]

## Block  IP's ###
Order Deny,Allow
Deny from 256.251.0.139
Deny from 199.127.0.259

यह अपाचे 2.4 पर काम करने के लिए अद्यतन किया गया है:

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

Michael's एकमात्र परिवर्तन [NC] को हटाना है, जो "एएच 00665" त्रुटि उत्पन्न करता है:

गैर-रेगेक्स पैटर्न '-एफ' के लिए नोकेस विकल्प समर्थित नहीं है और इसे अनदेखा कर दिया जाएगा


हाय आप अपने htaccess फ़ाइल पर निम्न नियमों का उपयोग कर सकते हैं:

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

गैर-www को www पर रीडायरेक्ट करें (दोनों: http + https)

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

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

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^/(.*)$ http://%1/$1 [R]

"Www" के बाद RewriteCond HTTP_HOST चर में सबकुछ कैप्चर करता है। और इसे% 1 में सहेजता है। रिवाइटरूल यूआरएल (सैन्स अग्रणी "/") को कैप्चर करता है और इसे $ 1 में सहेजता है।


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

इस काम को छोड़कर Michael's समान ही: पी