Apache를 사용하여 Laravel 페이지를 표시 할 수없는 경우의 대응 방법

이벤트 1 : 페이지에 액세스하면 404 Not Found가되었습니다.





원인 1.1 : Apache 설정 (httpd.conf 등)에서 AllowOverride가 All이 아니기 때문에


AllowOverrideNone 가 지정되어 있으므로 문서 루트가 되는 public 디렉토리 아래의 .htaccess 의 사용이 허가되어 있지 않기 때문에.

해결 방법 : AllowOverride에 None이 지정되면 .htaccess 사용이 금지 된 상태이므로 All로 설정하여 Apache를 다시 시작합니다.



라라벨에서 라우팅을해야 404 오류? - Qiita

httpd.conf
<Directory "/path/to/public">
    AllowOverride All
</Directory>

원인 1.2 : Apache 설정 (httpd.conf 등)에서 mod_rewrite 모듈을 활성화하지 않았기 때문에



아파치
Laravel을 Apache에서 실행할 때는 mod_rewrite 모듈을 사용하도록 설정하고 서버에서 .htaccess 파일을 실행합니다.
설치 5.7 Laravel의 깨끗한 URL

해결 방법 : mod_rewrite.so를 활성화하고 Apache를 다시 시작합니다.



httpd.conf
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

원인 1.3 : 웹 서버가 쓰는 디렉토리에 권한이 부여되지 않았기 때문에



디렉토리 권한
Laravel을 설치한 후 약간의 권한 설정이 필요합니다. storage 아래와 bootstrap/cache 디렉토리를 웹 서버로부터 기입 가능하게 해 주세요. 설정하지 않으면 Laravel이 제대로 실행되지 않습니다.
설치 5.7 Laravel 설정

대응 방법 : 권한 부여



사실은 777이 아니라 최소화
$ chmod -R 777 storage/
$ chmod -R 777 bootstrap/cache/

이벤트 2 : 페이지에 액세스하면 500 내부 서버 오류가 발생했습니다.





이벤트 2.1 : 리디렉션에 무한 루프가 발생했습니다.



보충 : Apache error_log 파일 경로는 httpd.conf에 ErrorLog로 정의됩니다.

error_log
AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

원인 2.1 : .htaccess에 RewriteBase가 정의되어 있지 않기 때문에



apache - Laravel sends the server on 10 redirects? - Stack Overflow
대응 방법 : RewriteBase 정의

.htaccess
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
...省略

좋은 웹페이지 즐겨찾기