.htaccess에서 Laravel과 html 파일을 공존시키고 쉽게 부분 시스템화하는 방법

정적 HP에 일부 시스템 도입하는 안건으로 Laravel을 이용했습니다만,
Laravel과 정적 파일의 공존에 대한 간결한 기사가 없었기 때문에 묶어 둡니다.

index.php를 괴롭히지 않아도
.htaccess를 조금 수정하면 쉽게 부분 시스템화할 수 있어요!

예)
■ 도메인http://example.com/
■ 서버의 폴더 구성(직하)

· index.html
· laravel 폴더



■상황

'http://example.com/'를 방문하면 index.html이 표시되는 사이트에
"laravel"이라는 Laravel 프로젝트 폴더를 올린 상태입니다.

추가하는 시스템 부분의 URL은, 「/test」를 추가한 「 http://example.com/test
하고 싶습니다.


덧붙여서, 이 상태에서 「http://example.com/test」를 두드려도, 당연히 에러입니다.

■ 솔루션
다음과 같은 .htaccess를 도메인 바로 아래에 배치합니다.


↓코피페용
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
    RewriteEngine On
    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]
    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ /laravel/public/index.php [L]
</IfModule>

RewriteRule에 "^/프로젝트명/public/index.php[L]"를 기재해 주세요.
(index.php에 패스를 통하는 의미나, .htaccess의 기술 설명은 여기에서는 생략합니다.모르는 분은 나중에 구구 해 보세요.)

이제 "http://example.com/test"를 두드리면 Laravel에서 처리되고,
"http://example.com/"일 때는 그대로 index.html이 표시됩니다.

그리고는 Laravel측의 처리를 써 가면, 정적 HP의 부분 시스템화 완료입니다!

그건 그렇고, Laravel 계층 구조가 바뀌면 asset ()이 정상적으로 작동하지 않습니다.
asset() 을 사용하면 도메인 바로 아래를 보러 가므로 다음과 같은 방법으로 해결할 수 있습니다.

①public하에 두고 있던 CSS나 JS를 폴더마다 「 http://example.com/ 」직하로 이동한다
② 파일의 경로 앞에 「/laravel/public/」를 추가해 지정한다.
예) src="/css/example.css"src="/laravel/public/css/example.css"③vendor 안을 개수하러 간다.

개인적으로는 ②의 방법으로 해결이 가장 빠르고, 또한 혼란도 적을까 생각합니다.

이상, 「.htaccess로 Laravel과 html 파일을 공존시켜, 간단하게 부분 시스템화하는 방법」이었습니다.

좋은 웹페이지 즐겨찾기