답변:
구성을 다음과 같이 변경하십시오 (슬래시 추가).
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
또는 @absiddiqueLive가 제안한 아래에 설명 된 솔루션 은 모든 도메인에서 작동합니다.
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
http 및 https를 지원하고 프로토콜 선택을 유지해야하는 경우 다음을 시도하십시오.
RewriteRule ^login\$ https://www.%{HTTP_HOST}/login [R=301,L]
어디 대신 login
에 checkout.php
당신은에 HTTPS를 지원하기 위해 필요하거나 어떤 URL.
나는 이것이 나쁜 생각이라고 주장한다. 추론을 위해이 답변을 읽으십시오 .
blog.example.com
이된다www.blog.example.com
https 및 http를 지원하는 올바른 솔루션은 다음과 같습니다.
# Redirect to www
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
www
다른 일반적인 솔루션처럼 하위 도메인을 리디렉션하지 않습니다 .
yoursite.co.uk
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]
^(.*)$
대신에 (.*)
?
다음 예제는 ssl 과 non-ssl 모두에서 작동하며 하나의 규칙 만 사용하여 http 및 https를 관리 할 때 훨씬 빠릅니다.
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
[테스트]
리디렉션됩니다
http
에
https
에
이것을 시도하십시오, 나는 많은 웹 사이트에서 그것을 사용했습니다, 그것은 완벽하게 작동합니다
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^bewebdeveloper.com$
RewriteRule ^(.*) http://www.bewebdeveloper.com/$1 [QSA,L,R=301]
위의 모든 솔루션을 테스트했지만 나를 위해 작동하지 않습니다 .http : //를 제거하려고 시도했지만 리디렉션하지도 www가 제대로 리디렉션되지 않으므로 혼란 스럽습니다. 특히 https로 모든 사이트를 실행하고 있습니다. : //
그래서 몇 가지 코드를 결합하여 http : // 및 https : //와 www 및 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 ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
이것이 누군가를 도울 수 있기를 바랍니다 :)
.htaccess 파일에 다음 코드를 추가하십시오.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
URL 리디렉션 자습서는 여기에서 찾을 수 있습니다. .htaccess 파일을 사용하여 www가 아닌 www를 www로, HTTP를 HTTPS로 리디렉션
이 구성은 SSL이 구성된 bitnami 워드 프레스에서 나에게 효과적이었습니다.
/opt/bitnami/apps/wordpress/conf/httpd-app.conf 파일의 "RewriteEngine On"아래에 아래 내용을 추가했습니다.
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]
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
WWW로 시작되지 않은 도메인을 리디렉션합니다. 모든 하위 도메인을 리디렉션하지는 않습니다.
쓸모있다.
최상위 답변은 www가 아닌 www를 www (예 : mysite.com-> www.mysite.com )로 리디렉션 하지만 와일드 카드 하위 도메인은 고려하지 않습니다.
random.mysite.com -> www.random.mysite.com
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]
* 참고 : 현재 테스트 할 인증서가 없기 때문에 https를 테스트하지 않았지만 누군가 내가 가지고있는 것을 확인하거나 최적화 할 수 있다면 멋질 것입니다.
가능하면 이것을 기본 Apache 구성 파일에 추가하십시오. 더 가벼운 무게의 솔루션으로 처리가 덜 필요합니다.
<VirtualHost 64.65.66.67>
ServerName example.com
Redirect permanent / http://www.example.com/
</VirtualHost>
<VirtualHost 64.65.66.67>
ServerAdmin me@example.com
ServerName www.example.com
DocumentRoot /var/www/example
.
.
. etc
따라서 VirtualHost
"example.com"에 대한 별도의 요청은 해당 요청을 캡처 한 후 영구적으로 main으로 리디렉션합니다 VirtualHost
. 따라서 모든 요청에 대한 REGEX 구문 분석이 없으며 클라이언트 브라우저는 리디렉션을 캐시하므로 "잘못된"URL을 다시 요청하지 않으므로 서버로드를 절약 할 수 있습니다.
끝에 슬래시가 Redirect permanent / http://www.example.com/
있습니다. 그렇지 않으면에서 example.com/asdf
리디렉션이 http://www.example.comasdf
대신로 리디렉션됩니다 http://www.example.com/asdf
.
301을 피하고 최신 303 또는 307 응답 상태 코드를 선호하십시오.
다음으로 표시된 영구 리디렉션이 정말로 필요한 경우 신중하게 생각하십시오. [R=301]
나중에 변경하기로 결정한 경우 페이지의 이전 방문자가 원래 리디렉션의 페이지를 계속 볼 수 있기 때문에 하십시오.
영구 리디렉션 정보는 브라우저의 캐시에 자주 저장되며 일반적으로 제거하기가 어렵습니다 (페이지를 다시로드해도 문제가 해결되지 않음). 귀하의 웹 사이트 방문자는 이전 경로 재 지정이 "영원히"중단 될 것입니다.
새로운 버전의 HTTP 프로토콜 (v1.1)에는 302 대신 사용할 수있는 두 개의 새로운 응답 상태 코드가 추가되었습니다.
303
URL 리디렉션이지만 요청 유형을 GET으로 변경해야합니다.307
URL 리디렉션이지만 처음 전송 된 요청 유형을 유지해야합니다.코드 302
가 모호한 것으로 간주되지만 코드 (비 영구적 리디렉션)를 계속 사용할 수 있습니다 . 어쨌든 대부분의 브라우저 302
는 새 303
코드가 지시 하는 것과 같은 방식으로 구현 합니다.
http://example.com/testing
로 리디렉션하십시오 http://www.example.com/testing
. 장기적으로 나쁜 접근 방식이 될 수 있습니까? 감사합니다,