.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 파일이 필요한 공용 폴더)가 프로젝트 폴더 안에 있으므로 주의해야 합니다.