처음부터 차근차근

라라벨 배포 - url에 public없애는 방법 본문

Framework/Laravel

라라벨 배포 - url에 public없애는 방법

_soyoung 2022. 7. 10. 02:45
반응형

라라벨을 배포할 때 생각지 못했던 문제가 생겼다.

모든 url에 '/public'이 붙는 문제이다.

구글링을 해봤더니 나만 이렇게 되는게 아니라 많은 사람이 라라벨을 배포할 때 '/public' 이 붙어서 이걸 없애는 방법을 찾았다.

 

이결 해결하려고 다양한 시도를 해봤었다.

많은 시도 끝에 그 중 성공한 방법이 public 폴더 자체를 없애고 그 안에 있는 파일들을 전부 루트 위치에 놓는 것이다.

하지만 이렇게 해봤을 때 url에서 /public이 사라지긴 했는데 프로젝트 전체적인 구조가 망가지는 방법이어서 이건 아니다 싶어 새로운 방법을 찾아봤다.

 

 

stackover flow에서 좋은 해답을 찾을 수 있었다.

 

Laravel 5 – Remove Public from URL

I know this is a very popular question but I haven't been able to find a working solution for Laravel 5. I've been trying to migrate from Codeigniter for a long time, but this convoluted installation

stackoverflow.com

 

 

프로젝트 폴더의 최상단 위치(root)에 .htaccess 파일을 새로 생성하고 아래의 내용을 입력하면 된다.

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1 

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ server.php
</IfModule>

 

이렇게 하면 프로젝트 구조를 망가트리지 않으면서 설정파일 하나로 url을 /public/ 없이 사용할 수 있다!

그런데 문제가 있다... 이미지를 업로드 할때 public 폴더에다 저장이 되도록 했는데 저 설정파일에 걸려서 resource 폴더에만 업로드되고 public 폴더에는 업로드가 안된다.

이 문제는 차차 해결해보고 해결방법을 찾으면 업로드해야겠다.

반응형
Comments