안녕하세요 푸민입니다.
이번에 php 초기 설정하면서 한가지 막히던 부분이 있어서 기록 남깁니다.
1. RewriteEngine
아파치에서 사용되는 rewrite 모듈인 RewriteEngine은 정규식을 이용하여 다양한 작업을 할 수 있습니다.
- URL 주소 수정 : 예를들어 test/article.php?article_id=32 와 같은 url을 test/article/32 와 같이 변경이 가능합니다.
- 외부 링크 차단 : 주소를 확인하여 트래픽 차단이 가능합니다.
- 주소 리다이렉트 : 페이지가 없을 경우 다른 주소로 이동이 가능합니다.(404페이지 처리)
2. Rewrite 모듈 사용 방법
# 설정값 변경을 위해서 vi 편집기로 실행합니다.
vi /etc/httpd/conf/httpd.conf
# Directory 설정에서 AllowOverride 설정을 변경합니다.
# 기존
<Directory "/var/www/html">
Require all granted
AllowOverride None
</Directory>
#변경
<Directory "/var/www/html">
Require all granted
AllowOverride All
</Directory>
# 저장 후 종료합니다.
:wq
이후 서버를 재시작합니다.
그리고 사용하기 원하는 경로에 .htaccess 파일을 만들어서 룰을 작성해줍니다.
# 루트 경로로 이동합니다.
cd /var/www/html
# .htaccess 파일을 생성합니다.
touch .htaccess
# vi 편집기로 실행
vi .htaccess
# 엔진 사용을 On 해주시고 원하는 룰을 작성합니다.
RewriteEngine On
RewriteRule ^article article.php [NC]
# 저장 후 종료합니다.
:wq
3. 룰 적용 확인
웹사이트에 article.php 페이지 접속시 기존에는
http://{IP 또는 도메인}/article.php 로 접속을 하였는데 위 설정 후에는
http://{IP 또는 도메인}/article 로 접속을해도 동일하게 표시가 됩니다.
4. 주의사항
한가지 작업하다가 RewriteRule이 적용이 되는데 안되는게 발생하여 체크해본 사항입니다.
<Directory "/var/www/html">
Require all granted
# AddType application/x-httpd-php .php .jsp
AllowOverride All
</Directory>
위와 같이 httpd.conf 에서 주석 처리된 부분은 주석 풀고 설정하게 되면 php 파일에 대해서 자동으로 비슷한 경로를 찾아서 실행해줍니다.
RewriteEngine On
RewriteRule ^article/(.*)$ article.php?seq=$1 [NC]
RewriteRule ^article article.php [NC]
.htaccess 의 위 부분에서 문제가 되었습니다.
기존 코드중에서 article 상세 정보를 내려주는 방식으로 article/32 와 같이 seq 값을 던지면 변환하여 seq를 파라미터로 전달하였습니다. 즉 원하는 결과는 article > article.php 로 실행 article/32 > article.php?seq=32 였습니다.
하지만 주석 부분 설정을 하게되면 article/32로 호출을 하여도 자동으로 article > article.php 순으로 호출이 되어서 파라미터 전달이 안되었습니다.
혹시 개발하시는데 참조가 되면 좋겠네요.
Rewrite 룰에 대한 자세한 사용법은 다시 올릴게요.
'Development > Web' 카테고리의 다른 글
[리눅스][CentOS] php 단축 태그 허용 설정 short_open_tag (0) | 2021.07.13 |
---|---|
[Web] Cafe24 이클립스 연동 (0) | 2015.08.11 |
[Web] 오류 코드 (0) | 2015.08.09 |
[JSP][MYSQL] 서버 환경 구성시 필요한 것들 (0) | 2015.08.08 |
[Web][JSP] JSTL to Scriptlet and Scriptlet to JSTL (0) | 2015.08.07 |
댓글