2010-09-03 21 views
7

Potrzebuję pomocy w przepisywaniu adresów URL w pliku .htaccess.Przepisywanie adresów URL dla różnych protokołów w .htaccess

Problem dotyczy różnych protokołów: https i http. Głównym celem przepisywania jest usunięcie "www" z adresu URL, ale protokół powinien pozostać taki sam jak wcześniej.

Na przykład, kiedy mam jak URL http: //www.domain.com/request należy przekierowany do http: //domain.com/request. I rozwiązać go z tych zasad:

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

Jednak w przypadku, gdy adres URL wygląda https: //www.domain.com/request powinien zostać przekierowany do https: //domain.com/ żądanie.

Niestety, powyższa reguła przekieruje do http niezależnie od aktualnego protokołu.

Z góry dziękuję.

+0

możliwe duplikat [htaccess przekierowanie dla non-www zarówno HTTP i HTTPS] (http://stackoverflow.com/questions/2015159/htaccess-redirect-for-non -www-both-http-and-https) –

+0

Dziękuję za link. Brakowało mi tego pytania podczas wyszukiwania. Niestety, ten ekwamunek nie działa. Przekierowuje https: // domain.com/request na adres http: // www.domena.com/request, zamiast https: // www.domena.com/request. – Alex

Odpowiedz

8

To jest dość podobne do połączonego możliwego duplikatu, ale ponieważ to wymusza www, gdzie chcesz go usunąć, może to uzasadniać oddzielną odpowiedź.

spróbować czegoś takiego:

RewriteCond %{HTTP_HOST} ^www\. 
RewriteCond %{HTTPS}s ^on(s)|off 
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$ 
RewriteRule^%1%3%{REQUEST_URI} [R=301,L] 
+2

Wyjaśnienie powyższych reguł z pewnością będzie bardzo pomocne jako punkt odniesienia dla osób szukających przekierowania na stronę www. –

+0

poważnie, twórcy apache API ... czemu nie wystarczy mieć zmienną taką jak 'HTTP_PROTOCOL' i mieć drugi argument podążający za tym samym wzorcem, co wszystkie pozostałe? 'RewriteCond% {HTTP_PROTOCOL}^http $' lub 'RewriteCond% {HTTP_PROTOCOL}^https $' zamiast robić wyjątek od reguły? Mniejsze wymagania dotyczące wiedzy są lepsze. Dodatkowa wiedza jest dobra, ale dodatkowa wymagana wiedza jest zła. I musisz znać dokładną składnię i wartość. Kto będzie zgadywał "^ on (s) | off". Freaken stare narzędzia związane z PHP ... – ahnbizcad

Powiązane problemy