CI 묻고 답하기

제목 웹호스팅에서도 url의 index.php을 생략하는 방법을 알고 싶습니다.
카테고리 일반
글쓴이 난만이 작성시각 2018/01/03 13:37:34
댓글 : 9 추천 : 0 스크랩 : 0 조회수 : 1409   RSS

안녕하세요.

혼자 php와 코드이그나이터를 공부하면서

홈페이지를 만들고 있습니다.

이 포럼에서 정말 많고 유용한 정보를 이용하여

로컬호스트에서 잘 만들고 있었는데,

큰 문제에 봉착하여 고수분들께 해답을 얻고자 글을 쓰게 되었답니다.

여러개의 localhost도 만들고, url에서 index.php를 생략하기 위해

Apache의 설정파일들(httpd.conf, httpd-vhosts.conf)을 몇가지 수정하였는데,

호스팅 업체에서 제공하는 일반적인 호스팅서비스에서는 Apache를 설정할 수가 없더군요.

호스팅 업체(가비아)에 문의해 봤더니, 단독서버를 신청하라는데,

비용이 어마어마하네요.

뭐 대단한 설정변경을 하려는 것도 아닌데 

큰 비용을 지불하기에는 부담스럽네요.

고수분들이 소규모 홈페이지를 제작하신다면,

어떤 방법으로 위 문제를 해결하시는지 알고 싶습니다.

 다음글 메인 index.php의 $application_fol... (1)
 이전글 페이지 읽어들이는 순서..질문있습니다. (2)

댓글

배강민 / 2018/01/03 13:51:12 / 추천 1

.htaccess를 통해 일부 아파치 설정을 할 수 있습니다. 물론 이 자체에 대한 권한도 걸 수 있지만, 요즘 호스팅에서는 대부분 되어있어서 될겁니다.

index.php 없애기로 검색해보시면 .htaccess를 통해 mod_rewrite를 설정하는 내용이 많이 나올겁니다.

난만이 / 2018/01/03 14:01:59 / 추천 0
배강민님이 말씀하시는 게 아래 코드인가요?
<IfModule mod_rewrite.c>
    RewriteEngine On
RewriteBase /
RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

이렇게 작성하여 로컬호스트에서는 성공했는데,

웹호스트에 업로드한 다음 새로고침했더니

404 Page Not Found가 떠서 질문드린 거랍니다.

배강민 / 2018/01/03 14:33:23 / 추천 1

질문에는 아파치 conf를 직접 수정하신듯이 써두셔서 htaccess로 하신건지 알수가 전혀 없었습니다.

htaccess 내용은 아파치 conf안에서도 수정해서 쓸 수 있는 것이기 때문에요.

https://customer.gabia.com/faq/view.php?seqno=3150

이글을 검색해보니 htaccess의 사용을 막아둔건 아닌것으로 보이므로

작성하신 .htaccess가 뭔가 잘못되지 않았나 싶습니다.

의심가는 부분은 /index.php/ 를 ./index.php/ 로 앞에 .(점)을 하나 찍어보면 되지 않을까도 싶긴하지만, 이게 아니라면 더는 모르겠습니다.

 

배강민 / 2018/01/03 14:35:46 / 추천 1

또 여러개의 localhost를 사용하는게 주목적이라면 가비아측의 말따라 웹호스팅으로는 절대 불가능합니다. 1개 폴더에 대한 권한만 주는것이 웹호스팅이기 때문이죠.

질문의 제목과 같이 index.php를 없애는게 주목적이시라면 .htaccess의 내용이 올바르다면 가능할 것입니다.

배강민 / 2018/01/03 14:41:36 / 추천 1
만약 index.php가 주목적이신게 맞는데 .htaccess로 도저히 안된다면 가비아측에 어떤 문의를 하셨던건지 모르겠지만 .htaccess를 사용할 수 있는 권한이 있냐고 물어보시는것도 1step일듯하네요.
난만이 / 2018/01/03 15:16:36 / 추천 0

상세한 답변 정말정말 고맙습니다.

http://www.codeigniter-kr.org/bbs/view/lecture?idx=7073

index.php를 없애는 게 주목적이 맞고, 위에 링크한 페이지에서 웅파님이 작성하신 글대로 따라서 코딩했습니다.

httpd.conf, config.php, .htaccess 파일의 설정을 변경했습니다.

그리고 제가 변경한 .htaccess파일은 index.php와 동일 디렉토리에 있기 때문에,

별도로 가비아에 문의할 일은 아닌 것 같네요.

 

근데 강민님의 말씀을 듣다보니

제가 index.php를 생략하기 위해 변경했던 설정들을

웹서버에 업로드한 파일들에서 원상태로 돌리면 페이지가 열릴 수 있겠다고 생각했는데,

실행 결과 404 Page Not Found 페이지가 뜨네요.

어디서부터 잘못되었는지 알수가 없네요.

웹서버 파일들을 다시 원상태로 돌리면서 어디서부터 잘못되었는지 확인해 봐야겠네요.

답변 감사드립니다. 혹시 달리 떠오르는 방법이 생각나시면 다시 답변 꼭 부탁드리겠습니다.

정말 고맙습니다.

 

난만이 / 2018/01/03 15:46:36 / 추천 0

문제점과 해답을 찾았네요.

http://www.cikorea.net/bbs/view/qna?idx=12316

문제는 application 폴더 하위의 controllers 폴더 안에 있는 컨트롤 파일들의 파일명이 소문자였던 것이 문제였네요.

파일명도 그 안에 있는 클래스명과 동일하게 첫글자를 대문자로 바꿨더니 되네요.

강민님 아니였으면 다른 원인 찾아보며 뻘짓할뻔했네요.

진심 감사드립니다.

배강민 / 2018/01/03 15:59:14 / 추천 0
아 그랬군요. 윈도우 기반에서 작업하다 올리면 많이 당하는 일이지요
난만이 / 2018/01/03 16:33:22 / 추천 0

대부분 리눅스 기반으로 작업하시는 모양이네요.

앞으로도 많은 가르침 부탁드릴께요~^^