Redirect non-www to www in.htaccess
Mam to w swoim .plik htaccess:
RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://www.example.com$1 [R=301,L]
Ale za każdym razem, gdy uzyskam dostęp do pliku na moim roocie, takiego jak http://example.com/robots.txt
, przekieruje on na http://www.example.comrobots.txt/
.
Jak mogę to poprawić, aby przekierować poprawnie do http://www.example.com/robots.txt
?
13 answers
Zmień konfigurację na tę (dodaj ukośnik):
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Lub rozwiązanie opisane poniżej (zaproponowane przez @absiddiqueLive) będzie działać dla dowolnej domeny:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Jeśli chcesz obsługiwać http i https i zachować wybór protokołu, spróbuj wykonać następujące czynności:
RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]
Gdzie zamieniasz login
na checkout.php
lub dowolny adres URL, na którym musisz obsługiwać HTTPS.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-19 03:55:12
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Dla Https
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^(.*)$ http%1://www.%{HTTP_HOST}/$1 [R=301,L]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-24 07:29:30
Oto prawidłowe rozwiązanie, które obsługuje https i http:
# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-28 08:21:08
Poniższy przykład działa zarówno na ssl i non-ssl i jest znacznie szybszy, ponieważ używasz tylko jednej reguły do zarządzania http i https
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
[sprawdzone]
To przekieruje
Http
Do
Https
Do
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-23 07:48:02
Spróbuj tego, używałem go na wielu stronach internetowych, działa doskonale
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1 [QSA,L,R=301]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-22 08:34:02
Ta konfiguracja zadziałała u mnie w bitnami wordpress z konfiguracją SSL:
Dodano poniżej pod "RewriteEngine On" w pliku/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]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 08:39:09
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
Spowoduje to przekierowanie domeny, która nie jest uruchomiona z WWW To nie jest przekierowanie Wszystkie sub domeny.
Jest to przydatne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-19 19:35:51
Uważam, że najlepsza odpowiedź skutecznie przekierowuje nie-www do www (ex: mysite.com -> www.mysite.com ), ale nie uwzględnia subdomen wieloznacznych, co skutkuje:
random.mysite.com -> www.random.mysite.com
Oto rozwiązanie z / bez 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]
*uwaga: nie testowałem https, ponieważ nie mam obecnie cert do przetestowania, ale jeśli ktoś może zweryfikować lub zoptymalizować to, co mam, byłoby super.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-10 09:03:20
Dodaj następujący kod w .plik htaccess.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Url redirect tutorial można znaleźć tutaj - Redirect non-www do www & HTTP do HTTPS za pomocą .plik htaccess
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-28 11:16:13
Przetestowałem wszystkie powyższe rozwiązania, ale nie działa dla mnie, próbowałem usunąć http://i nie przekieruje również usunięte www to przekierować dobrze, więc się mylić, specjalnie jestem uruchomiony wszystkie moje strony pod https: / /
Więc połączyłem kilka kodów razem i wymyśliłem idealne rozwiązanie zarówno dla http:// i https: / / oraz www i non-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 ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
Mam nadzieję, że to może komuś pomóc:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-11 12:57:55
Jeśli to możliwe, dodaj to do głównego pliku konfiguracyjnego Apache. Jest to lżejsze rozwiązanie, mniej wymagane przetwarzanie.
<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
Więc oddzielny VirtualHost
dla "example.com" przechwytuje te żądania, a następnie trwale przekierowuje je do głównej VirtualHost
. Nie ma więc parsowania REGEX przy każdym żądaniu, a przeglądarki klienckie będą buforować przekierowanie, więc nigdy (lub rzadko) ponownie nie będą żądać "złego" adresu url, oszczędzając na obciążeniu serwera.
Uwaga, końcówka ukośnika w Redirect permanent / http://www.example.com/
.
Bez niego przekierowanie z example.com/asdf
przekierowywałoby do http://www.example.comasdf
zamiast http://www.example.com/asdf
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-21 04:56:07
Dwa ostrzeżenia
Unikaj 301 i preferuj nowoczesne kody statusu odpowiedzi 303 lub 307.
Unikaj 301
Zastanów się dokładnie, czy naprawdę potrzebujesz stałego przekierowania oznaczonego jako [R=301]
, ponieważ jeśli zdecydujesz się go zmienić później, poprzedni odwiedzający stronę będą nadal widzieć stronę oryginalnego przekierowania.
Informacje o stałym przekierowaniu są często przechowywane w pamięci podręcznej przeglądarki i ogólnie trudno je wyeliminować (przeładować strona nie rozwiązuje problemu). Odwiedzający Twoją stronę utkną w poprzednim przekierowaniu "na zawsze".
Unikaj też 302
Nowa wersja protokołu HTTP (v1.1) dodała dwa nowe kody statusu odpowiedzi, które mogą być używane zamiast 302.
-
303
przekierowanie URL, ale żądające zmiany typu żądania na GET. -
307
przekierowanie URL, ale żądające zachowania typu żądania, jak pierwotnie wysłane.
Możesz nadal używać kodu 302
(przekierowanie nietrwałe), choć jest ono uważane za niejednoznaczne. W każdym razie większość przeglądarek implementuje 302
w taki sam sposób, jak instruuje nowy kod 303
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-13 18:47:00
Pisz .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]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-03 01:55:37