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




mod-rewrite url-rewriting (18)

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

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

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


Answers

RewriteEngine on
# if host value starts with "www."
RewriteCond %{HTTP_HOST} ^www\.
# redirect the request to "non-www"
RewriteRule ^ http://example.com%{REQUEST_URI} [NE,L,R]

यदि आप http और https दोनों पर www को हटाना चाहते हैं, तो निम्न का उपयोग करें:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|offs
RewriteRule ^ http%1://example.com%{REQUEST_URI} [NE,L,R]

यह गैर एसएसएल रीडायरेक्ट करता है

सेवा मेरे

और एसएसएल

सेवा मेरे

apache 2.4.* if निर्देश के साथ एक Redirect का उपयोग कर इसे पूरा कर सकते हैं,

<if "%{HTTP_HOST} =='www.example.com'">
Redirect / http://example.com/
</if>

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

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

लेकिन अगर हमें अलग http और https के लिए ऐसा करने की आवश्यकता है:

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

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [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 या किसी अन्य (विकास / परीक्षण के लिए वातावरण) जैसे कुछ हैं, तो यह यू को मूल वातावरण में रीडायरेक्ट नहीं करेगा।


RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/subfolder/$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]

चयनित उत्तर और कई अन्य समाधानों ने यहां यूआरएल के हिस्से को छोड़ दिया /, इसलिए मूल रूप से यह हमेशा मेरे लिए मुख्य डोमेन पर रीडायरेक्ट किया जाता है .. इसलिए मैं स्लैश के बाद पूर्ण पथ का सम्मान करने वाला काम कर रहा नमूना जोड़ रहा हूं ..

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [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]

मैंने ऊपर दिए गए नियम का उपयोग www को www करने के लिए किया था और यह मुखपृष्ठ के लिए ठीक काम करता है, हालांकि आंतरिक पृष्ठों पर वे /index.php पर अग्रेषित कर रहे हैं

मुझे यह अन्य नियम मेरी .htaccess फ़ाइल में मिला है जो इसका कारण बन रहा है लेकिन यह सुनिश्चित नहीं है कि इसके बारे में क्या करना है। कोई भी सुझाव बढ़िया होंगे:

############################################
## always send 404 on missing files in these folders

    RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

############################################
## never rewrite for existing files, directories and links

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

############################################
## rewrite everything else to index.php

    RewriteRule .* index.php [L]

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

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

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

/site/location/.htaccess 

अगर आप httpd.conf फ़ाइल में ऐसा करना चाहते हैं, तो आप इसे mod_rewrite के बिना कर सकते हैं (और स्पष्ट रूप से यह प्रदर्शन के लिए बेहतर है)।

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

मुझे यह जवाब यहां मिला: https://serverfault.com/questions/120488/redirect-url-within-apache-virtualhost/120507#120507


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

RewriteEngine On

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

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

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

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


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

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

उपयोग करें: जावास्क्रिप्ट / jQuery

// similar behavior as an HTTP redirect
window.location.replace("http://www..com");
// similar behavior as clicking on a link
window.location.href = "http://.com";

या। Htaccess:

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

और PHP विधि:

$protocol = (@$_SERVER["HTTPS"]    == "on") ? "https://" : "http://";

if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
    header('Location: '.$protocol.'www.'.$_SERVER    ['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']);
    exit;
}

अजाक्स

$.ajax({
    type: "POST",
    url: reqUrl,
    data: reqBody,
    dataType: "json",
    success: function(data, textStatus) {
        if (data.redirect) {
            // data.redirect contains the string URL to redirect to
            window.location.href = data.redirect;
        }
        else {
            // data.form contains the HTML for the replacement form
            $("#myform").replaceWith(data.form);
        }
    }
});

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

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


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

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

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


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 बदल देगा


मेरे पास साझा होस्टिंग (मास्टरहोस्ट) के लिए एक विशेष मामला है, सब कुछ विफल रहा था:

  RewriteCond %{HTTP:X-Forwarded-Port} !443
  RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]




apache mod-rewrite url-rewriting