Chciałbym przekierować www.example.com
na example.com
. Powoduje to następujący kod htaccess:
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
Ale czy istnieje sposób na zrobienie tego w ogólny sposób bez twardego kodowania nazwy domeny?
apache
mod-rewrite
url-rewriting
głęboka studnia
źródło
źródło
Odpowiedzi:
Tak samo jak Michael, z wyjątkiem tego, że działa: P
źródło
RewriteEngine On
prekursora, aby mógł działać.http://www.domain.com/
dohttp://domain.com//
. Powinieneś dodać/
doRewruteRule
. To działa dla mnieRewriteRule ^/(.*)$ http://%1/$1 [R=301,L]
.http://domain.com//
podwójnych ukośników. Tak zrobiłemRewriteRule ^(.*)$ http://%1$1 [R=301,L]
i wydaje się, że do tej poryAle jeśli musimy to zrobić dla osobnych http i https:
źródło
RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^www.example.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com [R=301,L]
.../
..htaccess
nie powinieneś otrzymywać dodatkowego slash. (Należy zauważyć, że jeśli wykonujesz to przekierowanie w konfiguracji serwera, prawdopodobnie nie powinieneś używać mod_rewrite na początek ... proste mod_aliasRedirect
w odpowiednim kontenerze vhost byłyby bardziej wydajne i mniej podatne na błędy.)Przekieruj inne niż www na www (zarówno: http + https)
źródło
RewriteEngine On
iRewriteBase /
, ale poza tym działało dobrze.Jeśli chcesz to zrobić w pliku httpd.conf, możesz to zrobić bez mod_rewrite (i najwyraźniej jest to lepsze dla wydajności).
Mam tę odpowiedź tutaj: /server/120488/redirect-url-within-apache-virtualhost/120507#120507
źródło
Oto zasady przekierowywania adresu URL www na no-www:
Oto zasady przekierowywania adresu URL bez www na www:
Zauważ, że użyłem
NE
flagi, aby zapobiec ucieczce Apache'a z ciągu zapytania. Bez tej flagi apache zmieni żądany adres URLhttp://www.example.com/?foo%20bar
nahttp://www.example.com/?foo%2250bar
źródło
RewriteCond
Wszystko wychwytuje wHTTP_HOST
zmiennej powww.
i zapisuje go w%1
.W
RewriteRule
przechwytuje URL bez początkowego/
i zapisuje je$1
.źródło
sans leading "/"
- W.htaccess
(jak podano w pytaniu) nie ma wiodącego/
, więc wzorzec nigdy nie pasuje, a przekierowanie nigdy się nie dzieje. (W kontekście serwera lub wirtualnego hosta występuje tylko wiodący ukośnik .) Ponadto, jeśli masz później jakieś dyrektywy mod_rewrite, będziesz potrzebowałL
flagi.Spróbuj tego:
Jeśli host zaczyna się od www, umieszczamy cały host na początku adresu URL, a następnie usuwamy „www”.
źródło
.htaccess
. W kontekście katalogu (.htaccess
) powinieneś zmienić pierwszyRewriteRule
na:RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [C,DPI]
(wymaga Apache 2.2.12+). Zwróć uwagę na dodanie ukośnika iDPI
flagi (Odrzuć informacje o ścieżce) - aby zapobiec pozornemu powieleniu części ścieżki URL (która w rzeczywistości jest „informacją o ścieżce”), jak stwierdzono we wcześniejszych komentarzach. Istnieją jednak prostsze dyrektywy - jak opisano w innych odpowiedziach.Kompletna ogólna obsługa WWW, http / https
Nie widziałem pełnej odpowiedzi. Używam tego do obsługi włączenia WWW.
Daj mi znać, jak to działa lub jeśli zostawiłem lukę.
źródło
www
na non-www
. Wymuszasz włączeniewww
.Uważam, że istnieje wiele dezinformacji na temat przekierowań htaccess. Po pierwsze, upewnij się, że witryna działa w systemie Unix przy użyciu Apache, a nie na hoście Windows, jeśli spodziewasz się, że ten kod będzie działał.
(Upewnij się jednak, że nie ma odstępów między wierszami tekstu; dodałem dodatkowe odstępy między wierszami, aby było dobrze w tym oknie).
Jest to jeden fragment kodu, którego można użyć do przekierowania wersji www witryny na wersję http: //. Istnieją również inne podobne kody, których można użyć.
źródło
Dla podfolderu
źródło
Dla tych, którzy muszą mieć dostęp do całej witryny BEZ prefiksu „www”.
Upewnij się, że dodajesz to do następującego pliku
źródło
protossl
zmiennej środowiskowej (nie jest to zmienna standardowa / serwerowa). To zawsze będzie puste, więc zawsze przekierujemy dohttp
. (Ideaprotossl
wcześniejszego ustawienia kodu dotyczy sytuacji, gdy chcesz zachować protokół podczas przekierowywania. Jednak w dzisiejszych czasach prawdopodobnie powinieneśhttps
Używając .htaccess do przekierowania na www lub nie www:
Po prostu umieść następujące linie kodu w głównym głównym pliku .htaccess. W obu przypadkach wystarczy zmienić domain.com na własną nazwę hosta.
Przekieruj na www
Przekieruj na stronę inną niż www
zmień DOT na =>. !!!
źródło
Użyłem powyższej reguły do fwd www do braku www i działa dobrze dla strony głównej, jednak na wewnętrznych stronach są one przesyłane do /index.php
Znalazłem tę inną regułę w moim pliku .htaccess, który ją powoduje, ale nie jestem pewien, co z tym zrobić. Wszelkie sugestie byłyby świetne:
źródło
www na non www z https
źródło
Jeśli chcesz usunąć
www
obahttp
ihttps
, użyj następujących poleceń:To przekierowuje Non ssl
do
I SSL
do
na Apache
2.4.*
możesz to zrobić zaRedirect
pomocąif
dyrektywy with ,źródło
użyj: JavaScript / jQuery
Lub .htaccess:
i metoda PHP:
Ajax
źródło
Jedyny sposób, w jaki udało mi się go uruchomić ...
źródło
Jeśli wymuszasz www. w url lub wymuszanie prototcol ssl, a następnie spróbuj użyć możliwych odmian pliku htaccess, takich jak:
źródło
RewriteCond %{SERVER_PORT} 80
sugerować użycie bardziej uniwersalnego sprawdzania:RewriteCond %{HTTPS} off
Wybrana odpowiedź i wiele innych rozwiązań tutaj upuściło część adresu URL po /, więc w zasadzie zawsze przekierowywałem do domeny głównej, przynajmniej dla mnie .. Więc dodam działającą próbkę uwzględniającą pełną ścieżkę po ukośniku ..
źródło
Alternatywne podejście, jeśli personalizacja .htaccess nie jest idealną opcją:
Stworzyłem prosty serwer przekierowań do użytku publicznego. Wystarczy dodać rekord A lub CNAME:
Więcej informacji: https://simpleredirect.net
źródło
Nie jestem pewien, dlaczego chcesz usunąć www. Ale wersja odwrócona to:
Zaletą tego skryptu jest: jeśli masz coś takiego jak test.whattimein.com lub jakikolwiek inny (środowisko do programowania / testowania), nie przekieruje U do pierwotnego środowiska.
źródło
Zostało to zaktualizowane do pracy w Apache 2.4:
Jedyną zmianą w stosunku do Michaela jest usunięcie
[NC]
, co powoduje błąd „AH00665”:źródło
RewriteCond %{REQUEST_FILENAME} !-f [NC]
).NC
Flaga ma większego znaczenia w powyższym jednak z powoduNC
flagi powinny być stosowane Oto złapać niewielką część ruchu bot który (niesłusznie) wysyła wielką hosta.Dodane, jeśli localhost, zignoruj przekierowanie (dla celów programistycznych w środowisku lokalnym). Jeśli nie localhost AND (nie https LUB to www), przekieruj na https i nie www.
źródło
Cześć, możesz użyć następujących reguł w swoim pliku htaccess:
źródło