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 #####
참고 자료
'Development > Environment' 카테고리의 다른 글
CentOS7에 MariaDB 설치하기 :: MariaDB install for CentOS7 (0) | 2022.11.17 |
---|---|
CentOS7에 nvm, nodejs 설치하기 :: nvm, nodejs install for CentOS7 (0) | 2022.11.16 |
MacBook M1 ERROR :: 'Eclipse.app' 응용 프로그램을 열 수 없습니다. (0) | 2022.08.03 |
오류 해결 :: VT-x is disabled in the BIOS for all CPU modes (0) | 2022.06.24 |
MacBook M1 에서 사용가능한 MySQL/MariaDB 무료 DB관리 툴(Sequal Ace) (0) | 2022.06.23 |