Programming/PHP

[Codeigniter4]URL에서 public/index.php 무시하기!

옥수수빵 2022. 12. 27. 11:20
728x90
DirectoryIndex /public/index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|assets|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./public/index.php/$1 [L,QSA]

루트 디렉토리에다가 .htaccess 파일을 만들어서 위 코드를 넣어서 저장하면 됩니다. 그리고 /public 디렉토리에 있는 .htaccess 파일에도 무언가를 수정하라고 하는데 제 기준(4.6.1)에서는 굳이 수정을 안 했지만 public 경로 없이도 정상적으로 페이지가 뜹니다.

아래 부분은 무시하세요.

보안 관련해서 치명적이라고 합니다.

 

========================== 전립선 ===============================

 

Codeigniter3에서는 index.php 이게 URL에 붙었는데 4에서는 public까지 붙었습니다.

  1. /app/Config/App.php 파일을 열어서 $baseURL 변수를 찾습니다. 그런 후 포트만 삭제하면 됩니다.
    public $baseURL = 'http://localhost:8080/';
    public $baseURL = 'http://localhost/';
    다음으로 $uriProtocol 변수를 찾아서 REQUEST_URI라고 된 부분을 PATH_INFO로 변경하시면 됩니다.
    public $uriProtocol = 'REQUEST_URI';
    public $uriProtocol = 'PATH_INFO';

  2. /public 디렉토리에 있는 .htaccess, index.php 이 두 가지 파일을 복사해서 루트 디렉토리로 복사해 넣으세요.
    아래 이미지를 보시면 루트 디렉토리에는 .htaccess, index.php 둘 다 없습니다. 그러니 그냥 복사해서 붙여넣으시면 됩니다. 그런 다음 좀 전에 복사한 index.php 파일을 열어서 아래 코드를 찾아서 '../app' 이 부분을 'app'로 변경하면 됩니다.
    require FCPATH . '../app/Config/Paths.php';
    require FCPATH . 'app/Config/Paths.php';

    원본 파일을 다운로드 받아서 열어보면 보시다시피 최상단 경로에는 .htaccess, index.php 이 두 가지 파일은 없습니다. 그래서 public 디렉토리로 가서

 

저 같은 경우는 dothome.co.kr에서 무료 호스팅을 받아서 설치를 했습니다. PHP는 7.4입니다.

반응형