.htaccess를 사용하여 HTTP를 HTTP로 리다이렉트합니다.
이 투고를 비롯해 여러 가지(1, 2, 3, 4)를 시도했지만 모두 TOO_MANY_REDIRECTS 또는 에러 500이 됩니다.자, 제 문제는 이렇습니다.
현재 .htaccess를 사용하면 다음과 같이 됩니다.
https://www.dukescasino.com/ - 완벽하게 동작
https://dukescasino.com/ - 위의 내용으로 리다이렉트 합니다.
다음 두 가지 옵션은 정상적으로 로딩되지만 https 버전으로 리다이렉트됩니다.
현재 .htaccess는 다음과 같습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
관련이 없다고 생각합니다만, 관련성이 있는 경우는, 다음의 액티브한 플러그 인의 리스트를 참조해 주세요.
- 상세 커스텀 필드
- 올인원 SEO 팩
- 탐색 메뉴의 Bop 검색 상자 항목 유형
- 문의폼7
- 코멘트를 무효로 하다
- 구글 XML 사이트 맵
- Jetpack by WordPress.com
- 검색 및 필터
- 슬라이더 WD
- 테이블 프레스
- Updraft Plus - 백업/복원
- Wordfence 보안
- WPide
- WP 스머시
- WP 슈퍼 캐시
실행된 테스트:
테스트 A:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
결과: ERR_TOO_MANY_REDIRECTS
테스트 B:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
결과: ERR_TOO_MANY_REDIRECTS
테스트 C:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
결과: ERR_TOO_MANY_REDIRECTS
테스트 D:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
결과: ERR_TOO_MANY_REDIRECTS
테스트 E:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}$1
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
결과: 302가 발견되었습니다.또한 ErrorDocument를 사용하여 요청을 처리하는 동안 500 내부 서버 오류가 발생했습니다.
Dreamhost에서는 다음과 같이 동작했습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
문제 해결!
최종 .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{ENV:HTTPS} !=on
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
# BEGIN WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
효과가 있습니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
제 경우 htaccess 파일에는 Far Future Expiration이나 WPSuperCache 등의 플러그인에 의해 설치된 많은 규칙과 워드프레스 자체의 행이 포함되어 있습니다.
문제를 일으키지 않기 위해 htaccess의 상단에 솔루션을 배치해야 했습니다(이것은 중요합니다.마지막에 배치하면 캐시 플러그인과의 충돌로 인해 잘못된 리다이렉트가 발생합니다).
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
이렇게 하면 설정이 변경되어도 워드프레스에 의해 행이 흐트러지지 않습니다.또, 문제없이 반복할 수 있습니다.
Jason Shah가 깔끔한 htaccess 규칙을 지켜줘서 고마워.
참고로 호스팅 프로바이더에 따라 다릅니다.
제 경우(Infomaniak)는 위의 어떤 것도 실제로 작동하지 않았고 무한 리다이렉트 루프가 발생하였습니다.
올바른 방법은 지원 사이트에 설명되어 있습니다.
RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://your-domain.com/$1 [R=301,L]
따라서 항상 호스팅 공급자에게 문의하십시오.이 방법을 설명하는 기사가 있었으면 좋겠어요.그렇지 않으면 지원부에 문의하십시오.
이것은 테스트 완료로 사용하기에 안전합니다.
이유: Wordpress가 재작성 규칙을 편집할 때 HTTPS 규칙을 삭제하지 않도록 하십시오.그러면 Wordpress 기본 규칙과 충돌하지 않습니다.
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
#Your our Wordpress rewrite rules...
</IfModule>
# END WordPress
주의: WordPress 주소 및 사이트 주소 URL을 다음과 같이 변경해야 합니다.https://
[ General Settings ](일반 설정)도 참조해 주세요.wp-admin/options-general.php
)
유감스럽게도 이 Q&A에 기재되어 있는 모든 솔루션이 효과가 있는 것은 아닙니다.효과가 있었던 것은, 다음과 같습니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
위의 워드프레스 규칙은 다중 사용자 네트워크 모드에서 워드프레스를 위한 것입니다.Wordpress가 단일 사이트 모드인 경우 다음을 사용합니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/?$ "https\:\/\/www\.example\.com\/" [R=301,L]
</IfModule>
# End Wordpress
위의 어떤 것도 나에게는 통하지 않았다.하지만 이 대사들은 내 워드프레스 사이트에서도 같은 문제를 해결했다.
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
http를 https로 리다이렉트하는 가장 쉬운 방법.word press https를 사용하여 site_url 및 home을 http://example.com에서https로 변경합니다.워드프레스가 리디렉션을 수행합니다.(따라서 "too many redirects" 오류가 발생하고 워드프레스는 http로 리다이렉트되며 .htaccess는 https로 리다이렉트 됩니다).
편집하지 않으려는 경우 사용할 수 있는 대체 솔루션을 소개합니다..htaccess
:
add_action( 'template_redirect', 'nonhttps_template_redirect', 1 );
function nonhttps_template_redirect() {
if ( is_ssl() ) {
if ( 0 === strpos( $_SERVER['REQUEST_URI'], 'https' ) ) {
wp_redirect( preg_replace( '|^http://|', 'https://', $_SERVER['REQUEST_URI'] ), 301 );
exit();
} else {
wp_redirect( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 );
exit();
}
}
}
테마 하단에 배치할 수 있습니다.functions.php
WordPress의 .htaccess 파일에 다음 내용을 추가합니다.
RewriteCond %{HTTP_HOST} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
따라서 기본 WordPress의 .htaccess 파일은 다음과 같습니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^yoursite.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ https://www.yoursite.com/$1 [L,R=301,NC]
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^digitalsoftwaremarket.com [NC]
RewriteRule ^(.*)$ http://www.digitalsoftwaremarket.com/$1 [L,R=301]
</IfModule>
위의 최종 .htaccess와 Test A,B,C,D,E는 나에게 효과가 없었습니다.아래 두 줄 코드를 사용했는데 WordPress 웹사이트에서 작동합니다.
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.thehotskills.com/$1 [R=301,L]
어디서 실수를 했는지 모르겠지만 이 페이지가 도움이 되었어요.
나한텐 안 통했어우선 프로바이더에서 SSL을 활성화하는 방법을 확인할 필요가 있었습니다..htaccess
내 공급자가 주는 것
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:HTTPS} !on
RewriteRule (.*) https://%{SERVER_NAME}/$1 [QSA,L,R=301]
</IfModule>
하지만 며칠 동안 연구해야 했던 건wp-config.php
제공된 사이트가 프록시 뒤에 있기 때문에 다음 행이 있습니다.
/**
* Force le SSL
*/
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';
wordpress의 .htaccess 파일에서 이 코드를 추가하거나 바꾸기만 하면 됩니다.
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
http에서https://www로 리다이렉트 합니다.
RewriteEngine On RewriteCond %{HTTP_HOST} ^example\.com [NC] RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
이건 확실히 먹힐 거야!
이 코드를 추가하면 마법처럼 작동합니다.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST}#%{HTTPS}s ^www\.([^#]+)#(?:off|on(s)) [NC]
RewriteRule ^ http%2://%1%{REQUEST_URI} [R=301,L]
</IfModule>
언급URL : https://stackoverflow.com/questions/32049820/use-htaccess-to-redirect-http-to-https
'programing' 카테고리의 다른 글
gson을 사용하여 중첩된 JSON 구문 분석 (0) | 2023.02.25 |
---|---|
"net:"을 가져오는 중:일부 AJAX 호출에서 ERR_BLOCKED_BY_CLIENT" 오류가 발생했습니다. (0) | 2023.02.25 |
Lombok을 사용한 Spring Boot 로깅 (0) | 2023.02.25 |
jq를 사용하여 JSON 문자열을 테이블로 포맷하려면 어떻게 해야 합니까? (0) | 2023.02.25 |
Angular JS는 DOM의 변화를 감시 (0) | 2023.02.25 |