이용안내

미니톡 이용과 관련된 도움말을 제공합니다.
REWRITE 규칙 적용하기

일반적인 환경(아파치 웹서버를 사용하는 모든 서버)에서는 미니톡 클라이언트에 이미 포함된 .htaccess 파일에 의하여 REWRITE 규칙이 적용되고 있습니다.

미니톡 클라이언트 설치화면에서 REWRITE 적용이 확인된 경우, 이 문서의 내용은 무시하셔도 됩니다.


이 문서에는 REWRITE 규칙을 적용하기 위한 모든 경우에 대해서 설명하고 있으므로, 자신에게 맞는 내용을 찾아 적용하시면 됩니다.




기본 REWRITE 규칙

기본적으로 미니톡 클라이언트에 포함된 .htaccess 파일은 아래와 같습니다.

Options -MultiViews
RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([^\/]+)/?$ admin/index.php?menu=$1 [L]


RewriteRule ^api/index.php$ api/index.php?%{QUERY_STRING} [L]
RewriteRule ^api/([^\/]+)$ api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]
RewriteRule ^api/([^\/]+)/?([^\/]+)?$ api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]


RewriteRule ^process/([^\/]+)$ process/index.php?action=$1&%{QUERY_STRING} [L]



1. 카페24 웹호스팅과 같이 루트폴더에서만 .htaccess 파일이 동작하는 경우

위의 .htaccess 파일은 미니톡 클라이언트 폴더에 포함되어 있으나, 카페24 웹호스팅과 같이 웹서버의 루트폴더 (카페24 웹호스팅의 경우 www 폴더)에서만 .htaccess 파일이 동작하고, 미니톡 클라이언트를 루트폴더(카페24 웹호스팅의 경우 www 폴더)가 아닌 다른 폴더(예 : minitalk)에 설치한 경우 REWRITE 규칙이 적용되지 않을 수 있습니다.


이런 경우 미니톡 클라이언트가 설치된 폴더(예 : minitalk)내의 .htaccess 파일을 웹서버의 루트폴더(카페24 웹호스팅의 경우 www 폴더)로 이동한 뒤, 이동한 .htaccess 파일을 열어 아래와 같이 수정하여 줍니다.

Options -MultiViews
RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[미니톡이 설치된 폴더명]/admin/([^\/]+)/?$ [미니톡이 설치된 폴더명]/admin/index.php?menu=$1 [L]


RewriteRule ^[미니톡이 설치된 폴더명]/api/index.php$ [미니톡이 설치된 폴더명]/api/index.php?%{QUERY_STRING} [L]
RewriteRule ^[미니톡이 설치된 폴더명]/api/([^\/]+)$ [미니톡이 설치된 폴더명]/api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]
RewriteRule ^[미니톡이 설치된 폴더명]/api/([^\/]+)/?([^\/]+)?$ [미니톡이 설치된 폴더명]/api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]


RewriteRule ^[미니톡이 설치된 폴더명]/process/([^\/]+)$ [미니톡이 설치된 폴더명]/process/index.php?action=$1&%{QUERY_STRING} [L]

위의 소스에서 [미니톡이 설치된 폴더명] 부분을 실제 미니톡이 설치된 폴더명으로 수정합니다.

만약 미니톡 클라이언트가 설치된 폴더명이 minitalk 인 경우 아래와 같이 수정되어 있으면 됩니다.

RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^minitalk/admin/([^\/]+)/?$ minitalk/admin/index.php?menu=$1 [L]


RewriteRule ^minitalk/api/index.php$ minitalk/api/index.php?%{QUERY_STRING} [L]
RewriteRule ^minitalk/api/([^\/]+)$ minitalk/api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]
RewriteRule ^minitalk/api/([^\/]+)/?([^\/]+)?$ minitalk/api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]


RewriteRule ^minitalk/process/([^\/]+)$ minitalk/process/index.php?action=$1&%{QUERY_STRING} [L]



2. 엔진엑스(nginx) 웹서버의 경우

엔진엑스(nginx, 이하 nginx) 웹서버의 경우 .htaccess 파일이 적용되지 않으므로, 직접 웹서버 설정파일을 수정하여 주셔야합니다.

현재까지 nginx 웹서버를 웹호스팅에서 사용하고 있지 않으므로, nginx 웹서버를 사용하는 경우는 서버호스팅 등 ROOT 권한을 가진 서버를 사용하고 있다고 가정합니다.


nginx 웹서버에 도메인을 연결하기 위해 수정한 파일을 열어, 아래와 같이 추가부분 시작 ~ 추가부분 끝까지의 내용을 추가하여 줍니다.

server {
  listen 80;
  server_name yourdomain.com
  root /home/user_id/public_html
  index index.php
   
  // 생략
   
  // 추가부분 시작
  location /[미니톡이 설치된 경로] {
    if (!-e $request_filename) {
      rewrite ^/admin/([^\/]+)/?$ /admin/index.php?menu=$1 last;
    }
   
    rewrite ^/api/index.php$ /api/index.php?$query_string last;
    rewrite ^/api/([^\/]+)$ /api/index.php?api=$1&idx=$2&$query_string last;
    rewrite ^/api/([^\/]+)/?([^\/]+)?$ /api/index.php?api=$1&idx=$2&$query_string last;
    rewrite ^/process/([^\/]+)$ /process/index.php?action=$1&$query_string last;
    rewrite ^/process/([^\/]+)/?(.*?)?$ /process/index.php?action=$1&extras=$2&$query_string last;
  }
   
  location ~* \.(eot|otf|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
  }
  // 추가부분 끝
}


위의 코드에서 [미니톡이 설치된 경로] 부분에 미니톡 클라이언트가 설치된 폴더명을 입력하여 줍니다.

이때, 해당경로에 웹서버의 루트폴더가 포함되지 않도록 주의합니다.


일부 nginx 서버의 경우 위의 설정으로는 미니톡이 설치된 경로를 정상적으로 인식하지 못하는 경우가 있습니다.

위의 설정을 추가했음에도 정상적으로 동작하지 않거나, 설치화면에서 REWRITE 설정을 확인할 수 없다는 오류가 나타날 경우에는 아래의 설정을 이용해보시기 바랍니다.


server {
  listen 80;
  server_name yourdomain.com
  root /home/user_id/public_html
  index index.php
   
  // 생략


  // 추가부분 시작
  location /[미니톡이 설치된 경로] {
    if (!-e $request_filename) {
      rewrite /admin/([^\/]+)/?$ /[미니톡이 설치된 경로]/admin/index.php?menu=$1 last;
    }
  
    rewrite /api/index.php$ /[미니톡이 설치된 경로]/api/index.php?$query_string last;
    rewrite /api/([^\/]+)$ /[미니톡이 설치된 경로]/api/index.php?api=$1&idx=$2&$query_string last;
    rewrite /api/([^\/]+)/?([^\/]+)?$ /[미니톡이 설치된 경로]/api/index.php?api=$1&idx=$2&$query_string last;
    rewrite /process/([^\/]+)$ /[미니톡이 설치된 경로]/process/index.php?action=$1&$query_string last;
    rewrite /process/([^\/]+)/?(.*?)?$ /[미니톡이 설치된 경로]/process/index.php?action=$1&extras=$2&$query_string last;
  }
  
  location ~* \.(eot|otf|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
  }
  // 추가부분 끝
}


서버의 ROOT 폴더가 /var/www/html 이고, 미니톡 클라이언트가 설치된 폴더가 /var/www/html/minitalk 인 경우 전체 코드는 아래와 같습니다.


server {
  listen 80;
  server_name yourdomain.com
  root /var/www/html
  index index.php
   
  // 생략
   
  // 추가부분 시작
  location /minitalk {
    if (!-e $request_filename) {
      rewrite /admin/([^\/]+)/?$ /minitalk/admin/index.php?menu=$1 last;
    }
  
    rewrite /api/index.php$ /minitalk/api/index.php?$query_string last;
    rewrite /api/([^\/]+)$ /minitalk/api/index.php?api=$1&idx=$2&$query_string last;
    rewrite /api/([^\/]+)/?([^\/]+)?$ /minitalk/api/index.php?api=$1&idx=$2&$query_string last;
    rewrite /process/([^\/]+)$ /minitalk/process/index.php?action=$1&$query_string last;
    rewrite /process/([^\/]+)/?(.*?)?$ /minitalk/process/index.php?action=$1&extras=$2&$query_string last;
  }
   
  location ~* \.(eot|otf|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
  }
  // 추가부분 끝
}



3. 다른 도메인을 사용하는 웹사이트에서 미니톡 채팅위젯을 사용하는 경우


미니톡 클라이언트의 도메인이 https://minitalk.domain.com 이고, 미니톡 채팅위젯이 설치된 사이트의 도메인이 https://mysite.com 인 경우처럼, 미니톡 클라이언트와 미니톡 채팅위젯이 설치된 사이트의 도메인이 다른 경우, 미니톡에서 사용중인 웹폰트가 정상적으로 불러와지지 않는 문제가 있습니다.


미니톡 클라이언트가 엔진엑스 (nginx) 웹서버에 설치된 경우, 이미 [2. 위의 엔진엑스 (nginx) 웹서버의 경우] 내용에 해당 내용이 포함되어 있으므로, 이 내용은 무시하셔도 됩니다.


아파치 웹서버의 경우, 미니톡 클라이언트의 REWRITE 규칙 적용을 위한 .htaccess 파일을 열어 .htaccess  파일 최상단에 아래와 같은 내용을 추가하여 줍니다.

<FilesMatch ".(eot|otf|ttf|woff|woff2)">
    Header always set Access-Control-Allow-Origin "*"
</FilesMatch>


전체적인 내용은 아래와 같습니다.

<FilesMatch ".(eot|otf|ttf|woff|woff2)">
    Header always set Access-Control-Allow-Origin "*"
</FilesMatch>


Options -MultiViews
RewriteEngine On


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/([^\/]+)/?$ admin/index.php?menu=$1 [L]


RewriteRule ^api/index.php$ api/index.php?%{QUERY_STRING} [L]
RewriteRule ^api/([^\/]+)$ api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]
RewriteRule ^api/([^\/]+)/?([^\/]+)?$ api/index.php?api=$1&idx=$2&%{QUERY_STRING} [L]


RewriteRule ^process/([^\/]+)$ process/index.php?action=$1&%{QUERY_STRING} [L]


만약 위와 같이 수정하였는데 500 에러가 발생한다면, 아파치의 mod_headers 모듈이 활성화되지 않아서 발생하는 문제로, 구글 검색등을 통해 mod_headers 모듈을 활성화 방법을 검색하여 적용하여 주시면 됩니다.



4. 아파치 (apache) 웹서버에서 .htaccess 설정이 적용되지 않는 경우


웹호스팅을 받지 않고, 아파치 웹서버를 직접 설치하여 사용하는 경우 기본적으로 설치되는 아파치 웹서버 설정에 따라, .htaccess 파일에 대한 override 설정이 적용되어 있지 않습니다.

이런 경우, 아파치 웹서버의 설정파일 (보통의 경우 /etc/apache2/httpd.conf) 을 열어서 <Directory> 설정을 찾습니다.


<Directory /var/www/*>
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>


기본적으로 Directory 설정은 여러개가 존재할 수 있는데 설정중 자신이 웹서버의 루트로 사용하고 있는 폴더경로의 설정을 찾습니다.

웹서버의 루트폴더가 /var/www/html 인 경우, /var/www/html 이 포함되어 있거나, /var/www 과 같은 웹서버 루트폴더의 상위폴더경로의 설정을 찾습니다.


기존 설정을 찾았다면, 해당설정에서 AllowOverride None 이 되어 있다면, None 부분을 All 로 변경하여 줍니다.

만약 기존설정이 없을 경우, 위의 코드에서 경로부분 (/var/www/*) 을 자신의 웹서버 루프폴더 경로로 변경하신 후 추가하여 줍니다.


아파치 웹서버 설정파일의 수정을 마쳤다면, 아파치 웹서버를 재시작하면 적용됩니다.

최종수정일 :