Development/Environment

cafe24 웹호스팅 서버 index 페이지 변경하기 (.htaccess, Apache, PHP)

고고마코드 2022. 10. 21. 17:22
반응형

cafe24 웹호스팅 서버를 사용하고 있는데, 도메인만 입력 시 접근되는 인덱스 페이지의 경로를 바꾸고 싶었습니다.

해당 방법은 서버에서 직접적으로 설정을 바꿀 수 없는 경우 활용해야 합니다.
서버에서 직접 설정을 바꿀 수 있는 경우는 이 방법을 사용하지 않는 것이 좋습니다.


첫 번째 방법

일반적

첫 번째 시도했던 방법은 redirect 방법입니다.

if (defined("_INDEX_")) {
    header("Location: "이동경로");
    return;
}

기존 인덱스 페이지가 호출되는 부분 상단에 해당 코드를 추가합니다.

그누보드

예를 들어 그누보드를 사용한다면 아래와 같습니다.

<?php
// 이 파일은 새로운 파일 생성시 반드시 포함되어야 함
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

if (defined("_INDEX_")) {
    header("Location: "이동경로");
    return;
}

...

그러나 이 방법은 redirect 이기 때문에 이동한 페이지의 경로가 그대로 드러납니다.
www.test.com 인 경우 인덱스 페이지를 intro/index.php 경로로 바꾸었다고 가정하면
www.text.com/intro/index.php 이처럼 경로가 모두 나옵니다.

제가 원했던 것은 경로는 바꾸되 주소는 www.test.com 로 노출하고 싶었습니다.


두 번째 방법

제가 원하는 방법은 서버 설정에서 바꾸어야 한다는 것입니다.
그러나 cafe24 웹호스팅 서버는 서버 설정을 제 마음대로 변경할 수 없습니다.
그러나 Apache에는 .htaccess 라는 파일을 통해 설정을 변경할 수 있습니다.

.htaccess 파일은 각 디렉토리 내에 존재할 수 있으며, 각 디렉토리에서 각 파일들에 규칙을 부여할 수 있습니다.

위에서 경고했던 것처럼 서버 설정을 .htaccess 를 통해 각 디렉토리 단위로 설정을 변경하기 때문에 가급적 사용하지 않는 것이 좋습니다.

일반적

기존 루트 경로(보통은 인덱스 페이지가 있는 경로)에 .htaccess 파일을 열어서 내용을 수정합니다. (숨김파일이므로 먼저 찾아보고, 만약 없다면 생성하세요.)

<IfModule mod_rewrite.c>
Options -Indexes
RewriteEngine On
DirectoryIndex intro/index.php index.php index.html  index.htm
</IfModule>

Options -Indexes는 디렉토리 리스트 노출을 막기 위해 추가했습니다.

인덱스 페이지에 우선순위를 두는 것인데, intro/index.php 를 찾으면 해당 페이지로, 없으면 그 다음 페이지를 찾도록 설정합니다.

그누보드

만약 그누보드의 경우 기본적으로 있는 설정들을 건드리지 않고 상단에 추가하면 됩니다.

#### 그누보드5 rewrite BEGIN #####
<IfModule mod_rewrite.c>
#### Custom ####
Options -Indexes
RewriteEngine On
DirectoryIndex intro/index.php index.php index.html  index.htm

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]
#### Custom ####

RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^shop/list-([0-9a-z]+)$  shop/list.php?ca_id=$1&rewrite=1  [QSA,L]
RewriteRule ^shop/type-([0-9a-z]+)$  shop/listtype.php?type=$1&rewrite=1  [QSA,L]
RewriteRule ^shop/([0-9a-zA-Z_\-]+)$  shop/item.php?it_id=$1&rewrite=1  [QSA,L]
RewriteRule ^shop/([^/]+)/$  shop/item.php?it_seo_title=$1&rewrite=1  [QSA,L]
RewriteRule ^content/([0-9a-zA-Z_]+)$  bbs/content.php?co_id=$1&rewrite=1  [QSA,L]
RewriteRule ^content/([^/]+)/$  bbs/content.php?co_seo_title=$1&rewrite=1      [QSA,L]
RewriteRule ^rss/([0-9a-zA-Z_]+)$  bbs/rss.php?bo_table=$1        [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)$  bbs/board.php?bo_table=$1&rewrite=1      [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/([^/]+)/$ bbs/board.php?bo_table=$1&wr_seo_title=$2&rewrite=1      [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/write$  bbs/write.php?bo_table=$1&rewrite=1    [QSA,L]
RewriteRule ^([0-9a-zA-Z_]+)/([0-9]+)$  bbs/board.php?bo_table=$1&wr_id=$2&rewrite=1  [QSA,L]
</IfModule>
#### 그누보드5 rewrite END #####

참고 자료


반응형