[WP] 워드프레스 htaccess 기본 설정 및 WWW URL 제거 방법
워드프레스로 사이트를 운영하는 중에 .htaccess 파일 기본 설정이 필요할 때가 있습니다. 워드프레스 htaccess 기본 설정은 일반 사이트와 멀티 사이트 용으로 나뉩니다. FTP 또는 SSH 등으로 .htaccess 파일이 없는 경우 확인이 되면 아래 내용을 참조해서 생성하면 되겠습니다.
✅ 워드프레스 htaccess 기본 설정: 일반 사이트
워드프레스 .htaccess 기본 설정(일반 사이트)은 다음과 같습니다.
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
✅ .htaccess 기본 설정: 멀티 사이트
🔲 하위 폴더 설정
# BEGIN WordPress Multisite
# Using subfolder network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress Multisite
🔲 하위 도메인 설정
# BEGIN WordPress Multisite
# Using subdomain network type: https://wordpress.org/documentation/article/htaccess/#multisite
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
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]
# END WordPress Multisite
✅ 워드프레스 WWW URL 제거: NON-WWW로 리디렉션
웹사이트의 SEO를 위해 또는 트랜드에 따르면 웹 사이트의 서브 도메인인 www는 점점 사용하는 추세가 줄어들고 있습니다. 크롬 앱에서도 www가 있는 사이트로 접속하더라도 마우스를 클릭해서 확인하기 전에는 www를 제거한 상태인 것이 그 반증이라 할 수 있겠습니다.
워드프레스에서 www URL 제거 방법은 크게 두 가지가 있습니다.(apache 기준) .htaccess 설정과 virtual host 파일을 수정하는 방법입니다.
🔲 .htaccess 설정
# BEGIN WordPress
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# HTTP와 www를 포함한 요청을 HTTPS(NON-WWW)로 리디렉션
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://mydomain.com$1 [R=301,L]
# END WordPress
🔲 virtual host 파일 설정
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias *.mydomain.com
# HTTP와 www를 포함한 요청을 HTTPS(NON-WWW)로 리디렉션
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://mydomain.com$1 [R=301,L]
</VirtualHost>
<IfModule mod_rewrite.c>
RewriteEngine On
</IfModule>
위 두 가지 설정이 되려면 개인 서버에서는 http.conf 파일 등에 RewriteEngine 설정이 전역 설정으로 되어 있어야 합니다. 직접 운영하는 서버가 아닌 경우 .htaccess 파일에서 설정을 하게 되는데 설정 후에도 적용이 되지 않는다면 사용 중인 호스팅 업체에 문의하면 되겠습니다.
콘텐츠 내 광고 및 제휴 링크가 포함될 수 있으며, 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.