본문 바로가기
Q&A해결2018년 2월 15일1분 읽기

Apache .htaccess rewrite 규칙 질문

서
서버관리자
조회 1996댓글 5
Apache에서 .htaccess로 URL을 깔끔하게 만들려고 합니다. 현재: example.com/page.php?id=123 목표: example.com/page/123 ``` RewriteEngine On RewriteRule ^page/([0-9]+)$ page.php?id=$1 ``` 이렇게 했는데 500 에러가 납니다. mod_rewrite가 활성화되어 있는지는 어떻게 확인하나요?

댓글 5

서서버지기영호8년 전
먼저 mod_rewrite 활성화 확인은 터미널에서 `apache2ctl -M | grep rewrite`로 확인 가능합니다. `rewrite_module`이 보이면 활성화된 거예요.
김김영삼8년 전
500 에러는 보통 .htaccess 문법 에러입니다. RewriteBase를 추가해보세요.

```apache
RewriteEngine On
RewriteBase /
RewriteRule ^page/([0-9]+)$ page.php?id=$1 [L,QSA]
```

`[L]`은 마지막 규칙, `[QSA]`는 기존 쿼리스트링 유지입니다. 그리고 Apache 설정에서 `AllowOverride All`로 되어있는지도 확인해보세요. `AllowOverride None`이면 .htaccess가 무시됩니다.
풀풀스택지훈8년 전
추가로 에러 로그도 확인해보세요. `/var/log/apache2/error.log`에서 정확한 에러 원인을 알 수 있습니다.
서서버관리자(guest)김영삼8년 전
AllowOverride가 None으로 되어 있었습니다! All로 바꾸고 Apache 재시작하니까 됩니다. 감사합니다.
서서버관리자(guest)8년 전
해결됐습니다! AllowOverride 설정이 문제였네요. 에러 로그도 앞으로 꼭 확인하겠습니다.
Ctrl+Enter로 등록