Algemene htaccess leidt www om naar niet-www

Ik wil www.example.comomleiden naar example.com. De volgende htaccess-code maakt dit mogelijk:

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

Maar is er een manier om dit op een generieke manier te doen zonder de domeinnaam hard te coderen?


Antwoord 1, autoriteit 100%

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

Hetzelfde als Michael’sbehalve dat deze werkt 😛


Antwoord 2, autoriteit 12%

Maar als we dit voor aparte http en https moeten doen:

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]

Antwoord 3, autoriteit 8%

Redirect niet-wwwnaar www(beide: 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]

Antwoord 4, autoriteit 5%

Als je dit in het httpd.conf-bestand wilt doen, kun je het doen zonder mod_rewrite (en blijkbaar is het beter voor de prestaties).

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

Ik heb hier dat antwoord: https://serverfault.com/Questions / 120488 / Redirect-URL-BINNEN-APACHE-VIRTUALHOST / 120507 # 120507


5, Autoriteit 4%

Hier zijn de regels om een ​​WWW-URL naar NO-WWW te omleiden:

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

Hier zijn de regels om een ​​NO-WWW-URL door te sturen naar www:

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

Merk op dat ik NEvlag gebruikt om te voorkomen dat Apache de querystring ontsnapt. Zonder deze vlag verandert Apache de gevraagde URL http://www.example.com/?foo%20barnaar http://www.example.com/?foo%2250bar


6

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

De RewriteCondGeeft alles vast in de HTTP_HOSTvariabele na de www.en slaat het op in %1.

De RewriteRuleVastgelegd de URL zonder de toonaangevende /en slaat het op in $1.


7

Probeer dit:

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

Als de host begint met www, plakken we de hele host aan het begin van de URL, start u vervolgens de “www”.


8

Er kan veel verkeerde informatie zijn over HTAccess-omleidingen, ik vind het. Controleer eerst of uw site op UNIX draait met behulp van Apache en niet op een Windows-host als u verwacht dat deze code werkt.

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

(zorg ervoor dat er geen lijnruimtes zijn tussen elke lijn van tekst, ik heb een extra ruimte toegevoegd tussen lijnen, dus het maakt goed in dit venster.)

Dit is een fragment van de code die kan worden gebruikt om de WWW-versie van uw site naar de HTTP: //-versie te richten. Er zijn andere vergelijkbare codes die ook kunnen worden gebruikt.


9

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

voor submap


10

Voor degenen die nodig zijn om toegang te krijgen tot de volledige site zonder het voorvoegsel ‘WWW’.

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

Zorg ervoor dat je dit aan het volgende bestand toevoegt

/site/location/.htaccess 

Antwoord 11

Ik heb de bovenstaande regel gebruikt om www door te sturen naar geen www en het werkt prima voor de startpagina, maar op de interne pagina’s die ze doorsturen naar /index.php

Ik vond deze andere regel in mijn .htaccess-bestand die dit veroorzaakt, maar ik weet niet zeker wat ik eraan moet doen. Eventuele suggesties zouden geweldig zijn:

############################################
## 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]

Antwoord 12

www naar niet www met https

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]

Antwoord 13

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]

Als u wwwop zowel httpals httpswilt verwijderen, gebruikt u het volgende:

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

Dit wordt omgeleid
Geen ssl

Naar

en
SSL

Naar

Op Apache 2.4.*U kunt dit uitvoeren met behulp van een Redirectmet ifRICHTLIJN,

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

14

Gebruik: Javascript / jQuery

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

of .htaccess:

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

en de PHP-methode:

$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

$.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);
        }
    }
});

15

.Htaccess om door te leiden naar www of niet-www:

Plaats eenvoudig de volgende regels van de code in uw hoofd, root .htaccess-bestand.
Verander in beide gevallen gewoon Domain.com naar je eigen hostnaam.

Omleiden naar www

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^domain\.com [NC]
  RewriteRule ^(.*)$ http://wwwDOTdomainDOtcom/$1 [L,R=301]
</IfModule>

Omleiden naar niet-www

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC]
  RewriteRule ^(.*)$ http://domainDOTcom/$1 [L,R=301]
</IfModule>

Wijzig DOT naar = & GT; . !!!


16

De enige manier waarop ik het heb gekregen om te werken …

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

17

Als u www forceert. In URL of Forcing SSL-prototcol, probeer dan mogelijke variaties in HTAccess-bestand te gebruiken, zoals:

RewriteEngine aan
Herschrijfbasis /
### FORCE WWW ###
REWRITECOND% {http_host} ^ voorbeeld \ .com
Herschrijver (. *) Http://www.example.com/$1 [r = 301, l]
## FORCE SSL ###
REWRITECOND% {SERVER_PORT} 80
Herschrijver ^ (. *) $ Https://example.com/$1 [r, l]
## Blokkeer IP's ###
Bestel weigeren, toestaan
Ontken vanaf 256.251.0.139
Ontken uit 199.127.0.259

18

Dit wordt bijgewerkt om te werken aan Apache 2.4:

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

De enige wijziging vs Michael’s is om de [NC]te verwijderen, die de “AH00665” FOUT:

Nocase-optie voor niet-regex patroon ‘-F’ wordt niet ondersteund en wordt genegeerd


19

Het geselecteerde antwoord en vele andere oplossingen hebben hier het deel van de URL laten vallen na /, dus in principe werd het altijd doorgestuurd naar het hoofddomein, althans voor mij .. dus ik voeg werkmonster toe met respect voor het volledige pad na Slash ..

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

20

Alternatieve aanpak als .Htaccess aanpassingen niet ideaal is:

Ik heb eenvoudige omleiding server gemaakt voor openbaar gebruik. Voeg gewoon een of CNAME-record toe:

CNAME   r.simpleredirect.net
A       89.221.218.22

Meer info: https://simpledirect.net


21

Ik ben niet zeker waarom u www wilt verwijderen.
Maar omgekeerde versie zou zijn:

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

en voordeel van dit script is:
Als je iets als test hebt. Whattimein.com of een ander (omgeving voor het ontwikkelen / testen)
Het zal u niet omleiden naar de oorspronkelijke omgeving.


22

Toegevoegd als localhost, negeer omleiding (voor ontwikkelingsdoel in de lokale omgeving). Indien niet localhost en (niet HTTPS of IT’s www), omleiden naar https en niet-www.

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

23

HI U kunt de volgende regels op uw HTAccess-bestand gebruiken:

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

Other episodes