Ik heb dit in mijn .htaccess-bestand:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301,L]
maar telkens wanneer ik een bestand in mijn hoofdmap open, zoals http://example.com/robots.txt
, wordt het omgeleid naar http://www.example.comrobots.txt/
.
Hoe kan ik dit corrigeren zodat het correct wordt omgeleid naar http://www.example.com/robots.txt
?
Antwoord 1, autoriteit 100%
Wijzig uw configuratie hierin (voeg een schuine streep toe):
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Of de onderstaande oplossing (voorgesteld door @absiddiqueLive) werkt voor elk domein:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Als je http en https wilt ondersteunen en de protocolkeuze wilt behouden, probeer dan het volgende:
RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]
Waar je login
vervangt door checkout.php
of welke URL je ook nodig hebt om HTTPS te ondersteunen.
Ik zou echter beweren dat dit een slecht idee is. Voor de redenering lees dit antwoord.
Antwoord 2, autoriteit 25%
Hier is de juiste oplossing die https en http ondersteunt:
# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
UPD.: voor domeinen zoals .co.uk
, vervang
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
met
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+\.[^.]+$
Antwoord 3, Autoriteit 21%
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
https
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
Antwoord 4, Autoriteit 6%
In het volgende voorbeeld werkt op zowel SSL en niet-ssl en is veel sneller als je gewoon een regel gebruiken voor het beheren http en https
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
[Geteste]
Dit zal redirect
http
Naar
https
Naar
Antwoord 5, Autoriteit 2%
Probeer deze, gebruikte ik het op vele websites, het werkt perfect
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1 [QSA,L,R=301]
Antwoord 6
Ik heb alle bovenstaande oplossingen getest, maar werkt niet voor mij, ik heb geprobeerd het verwijderen van de http: // en zal niet redirect ook verwijderde de www te buigen goed, dus ik in de war raken, speciaal Ik stel al mijn plaatsen onder https: //
Dus ik heb wat codes gecombineerd en kwam met een perfecte oplossing voor zowel http:// en https:// en www en niet-www.
# HTTPS forced
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# Redirect to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Ik hoop dat dit iemand kan helpen 🙂
Antwoord 7
Voeg de volgende code toe aan het .htaccess-bestand.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Tutorial voor het omleiden van URL’s is hier te vinden – Redirect niet-www naar www & HTTP naar HTTPS met .htaccess-bestand
Antwoord 8
Deze configuratie werkte voor mij in bitnami wordpress met SSL geconfigureerd :
Het onderstaande toegevoegd onder “RewriteEngine On” in bestand /opt/bitnami/apps/wordpress/conf/httpd-app.conf
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Antwoord 9
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
Hiermee wordt uw domein omgeleid dat niet is begonnen met WWW
Het is niet uw hele subdomein omleiden.
Het is handig.
Antwoord 10
Ik geloof dat het beste antwoord niet-www met succes omleidt naar www (bijvoorbeeld: mysite.com -> www.mysite.com), maar geen rekening houdt met subdomeinen met jokertekens, wat resulteert in in:
random.mysite.com -> www.random.mysite.com
Hier is een oplossing met/zonder HTTPS
HTTP
RewriteEngine On
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.mysite.com/$1 [L,R=301]
HTTP/HTTPS
RewriteEngine On
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=protocol:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=protocol:http]
RewriteCond %{HTTP_HOST} !www.mysite.com$ [NC]
RewriteRule ^(.*)$ %{ENV:protocol}://www.mysite.com/$1 [L,R=301]
*opmerking: ik heb https niet getest omdat ik momenteel geen certificaat heb om te testen, maar als iemand kan verifiëren of optimaliseren wat ik heb, zou dat geweldig zijn.
Antwoord 11
Twee waarschuwingen
Vermijd 301 en geef de voorkeur aan moderne 303 of 307 antwoordstatuscodes.
Vermijd 301
Denk goed na of u de permanente omleiding die wordt aangegeven als [R=301]
echt nodig heeft, want als u besluit deze later te wijzigen, blijven de vorige bezoekers van de pagina de pagina van de originele omleiding.
De permanente omleidingsinformatie wordt vaak opgeslagen in de cache van de browser en is over het algemeen moeilijk te verwijderen (de pagina opnieuw laden lost het probleem niet op). Uw websitebezoekers zullen “voor altijd” in de vorige omleiding blijven steken.
Vermijd ook 302
De nieuwe versie van het HTTP-protocol (v1.1) heeft twee nieuwe responsstatuscodes toegevoegd die kunnen worden gebruikt in plaats van 302.
303
URL-omleiding maar veeleisend om het type verzoek te wijzigen in
KRIJGEN.307
URL-omleiding maar veeleisend om het type verzoek te behouden zoals oorspronkelijk verzonden.
Je kunt nog steeds de code 302
(niet-permanente omleiding) gebruiken, hoewel dit als dubbelzinnig wordt beschouwd. In ieder geval implementeren de meeste browsers 302
op dezelfde manier als de nieuwe 303
-code aangeeft.
Antwoord 12
Voeg dit indien mogelijk toe aan het hoofdconfiguratiebestand van Apache. Het is een lichtere oplossing, waarvoor minder verwerking nodig is.
<VirtualHost 64.65.66.67>
ServerName example.com
Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost 64.65.66.67>
ServerAdmin [email protected]
ServerName www.example.com
DocumentRoot /var/www/example
.
.
. etc
Dus, de aparte VirtualHost
voor “example.com” legt die verzoeken vast en leidt ze vervolgens permanent door naar je hoofd VirtualHost
. Er is dus geen REGEX-parsing bij elk verzoek, en uw clientbrowsers slaan de omleiding in de cache op, zodat ze nooit (of zelden) de “verkeerde” url opnieuw zullen opvragen, wat u bespaart op de serverbelasting.
Let op, de afsluitende slash in Redirect permanent / http://www.example.com/
.
Zonder dit zou een omleiding van example.com/asdf
omleiden naar http://www.example.comasdf
in plaats van http://www.example.com/asdf
.
Antwoord 13
Schrijf in .htaccess 🙂
## Redirect from non-www to www (remove the two lines below to enable)
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]