내 Laravel 프로젝트 폴더로 리디렉션

내 Laravel 프로젝트 폴더로 리디렉션

.htaccess내 파일 에 다음 내용이 있습니다 . ./hc.htaccess​리디렉션이 발생하지 않고 여전히 의 내용이 표시됩니다 index.html.

RewriteEngine On

RewriteBase /hc/

<Files .*>
    Order Deny,Allow
    Deny From All
</Files>

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php?/$0 [PT,L,QSA]

답변1

내 프로젝트 폴더로 리디렉션될 것으로 예상했습니다 /hc.같은 수준에서.htaccess.

그것이 문제이다. .htaccess파일이 하위 디렉터리에 있는 경우 요청에 하위 디렉터리를 /hc이미 포함하지 않는 한 요청이 표시되지 않습니다 ./hc

파일 .htaccess은 상위 디렉터리에 있어야 합니다. 즉. 문서 루트. (덧붙여서 RewriteBase /hc/이 파일이 문서 루트에 있는 경우에만 지시문이 필요합니다 .)

또는추가의 .htaccess/hc모든 요청을 단순히 디렉터리(전면 컨트롤러) 로 전달하는 문서 루트의 파일입니다 . 예를 들면 다음과 같습니다.

RewriteEngine On
RewriteRule (.*) hc/$1 [L]

mod_rewrite는 기본적으로 상속되지 않으므로 요청이 /hc하위 디렉터리 에 다시 작성되면 .htaccess하위 디렉터리의 파일이 처리되고 상위 파일의 mod_rewrite 지시문을 재정의하므로 .htaccess다시 쓰기 루프가 발생하지 않습니다.


RewriteRule .* index.php?/$0 [PT,L,QSA]

업데이트:당신의치환마지막 문자열은 RewriteRule이전 지시문과 다릅니다. 둘 다 아마 정확하지 않을 것입니다. ?쿼리 문자열을 사용하려는 의도가 아니라면 위 지시문에서 를 제거하고 ?이전 지시문에 a를 추가해야 할 수도 있습니다. 현재로서는 첫 번째 용도경로 정보URL을 전달하기 위해 두 번째는쿼리 문자열.

또한 PT플래그는 디렉터리별 .htaccess파일에서 중복됩니다. 쿼리 문자열을 사용하지 않는 경우 플래그 QSA도 제거할 수 있습니다.

답변2

"사이트 사용 가능" 아파치 구성 파일에서 "다시 쓰기" 옵션을 허용해야 합니다. laravel의 경우 DocumentRoot(.htaccess 파일이 필요한 공용 폴더)가 프로젝트 폴더 안에 있으므로 주의해야 합니다.

관련 정보