짧은주소 RewriteRule에서 파일확장자 삭제 문의

짧은주소 RewriteRule에서 파일확장자 삭제 문의

QA

짧은주소 RewriteRule에서 파일확장자 삭제 문의

본문

안녕하세요.

http://XXX.com/about.php

위와 같은 주소를 http://XXX.com/about 이런 식으로 url에서 .php 파일 확장자를 삭제하고 싶습니다.

현재 'Apache 설정' 기본형태로 되어 있고,

검색을 해보니 

RewriteRule ^([0-9a-zA-Z_]+)$ $1.php [NC,L]

대충 위와 비슷한 형식으로 수정하는 것 같던데, 

위 코드를 삽입하면 제대로 적용이 되지 않네요.

RewriteCond 이것도 따로 추가해주어야 하는지, 그리고 위 코드도 어떻게 변형을 해야하는지 

궁금합니다.

이 질문에 댓글 쓰기 :

답변 2

그누보드의 짧은 주소와 같이 사용하기는 어렵습니다.

 

다음과 같이 하는 경우, php 확장자 제거는 되지만..

그누보드 짧은 주소 적용에는 문제가 됩니다.

/about 이 게시판 about 룰과, /about.php 룰이 서로 충돌될 수 있기 때문입니다.

 

 

#### 그누보드5 rewrite BEGIN #####
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(.*)$ $1.php
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 #####

 

둘 중 하나를 포기해야 될 수 있습니다. (일반 파일 확장자 제거 & 그누보드 짧은주소)

꼭 같이 적용하고 싶다면 다음과 같은 방법을 생각해 볼 수 있습니다.

 

#### 그누보드5 rewrite BEGIN #####
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(about|company)$ $1.php
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 #####

=> /about 은 /about.php 로, /company 는 /company.php 로 적용됩니다.

 

 

rewritecond 는 지금상황에서는 핵심 원인이  아닙니다.

RewriteCond %{REQUEST_FILENAME} !-d 

는 '실제 디렉토리명이 아닌 경우일 때' 아래 조건을 실행하라는 의미입니다. (about 이라는 디렉토리가 있다면.. about 디렉토리 찾기가 우선이 되게 해주는 조건입니다.)

RewriteCond %{REQUEST_FILENAME} !-d 

는 '실제 파일명이 아닌 경우일 때' 아래 조건을 실행하라는 의미입니다.

웹 루트에 .htaccess 파일을 다음과 같이 생성하시면 됩니다.


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

마르스컴퍼니님, 답변주셔서 감사합니다.
올려주신 그대로 했는데, 몇 번을 다시 원복/수정해도 에러가 나네요.
RewriteCond 이 부분의 조건이 아무래도 '키'인거 같은데요,
기존 그누보드 기본 짧은주소 설정이
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
이렇게 되어 있는 걸
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
이렇게 대체해도 문제가 생기고
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
이렇게 해도 마찬가지로 에러가 나네요.

기존 그누보드 기본 짧은주소 설정에서 추가만 하려고 하는데, 어렵네요...

답변을 작성하시기 전에 로그인 해주세요.
전체 25
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT