재작성 모듈이란 무엇입니까?
mod_rewrite는 Apache 모듈 중 하나로 설정된 규칙에 따라 서버에 요청한 도메인을 포함하는 URL에 따라 지정된 URL, 파일 또는 기타 페이지를 표시할 수 있는 모듈입니다.
rewrite 모듈을 사용하여 복잡한 URL을 간결하고 간결하게 표현할 수 있으며 보안도 보장됩니다.
당신은 할 수 있습니다.
강력한 기능을 가지고 있지만 조작이 어렵기 때문에 사용하기가 어렵습니다.
모두. 이 가이드에서는 Rewrite 모듈을 설치하고 사용하는 방법에 대한 몇 가지 지침을 작성했습니다.
.
.
mod_rewrite 규칙
.
RewriteEngine: mod_rewrite 사용 여부(On/Off)
RewriteBase: 기본 경로 설정
RewriteCond: 문자열의 패턴 조건 비교
RewriteRule: 실제로 대체되는 조건
플래그 유형:
금지|F – 403 오류로 리디렉션
예) RewriteRule ^/test /home/blog/html/test.php (F)
.
사라|지 – 410 오류로 리디렉션
.
프록시 요청|P – 프록시 요청으로 전송
.
마지막|L – 뒤에 규칙을 적용하지 않고 종료
예) RewriteRule ^/$
재작성 규칙 ^$
.
신규|N – 새로운 규칙을 시작합니다
.
리디렉션|R – 무조건 전달
.
체크 안함 – 대문자/소문자는 고려하지 않습니다.
.
QSA 결과에 Cond의 내용을 추가합니다.
.
또는 – 또는
.
씨
예) RewriteRule ^((^.)+).example.com(.*) /home/$1/public_html$2
이 규칙은 일반적으로 사용자의 홈 도메인이 보조 도메인으로 자동 설정될 때 사용됩니다.
예: http://user_id. example.com/hello.html에서 요청을 받은 경우
/home/user_id/public_html/hello.html로 리디렉션합니다.
.
훈련
.
1. 포스 www
서버 관리자 [email protected]
문서 루트 /www/src
서버 이름 www.*.net
서버 별칭 *.net www.*.com *com www.*.co.kr *.co.kr www.*.kr *.kr
RewriteEngine 켜기
RewriteCond %{HTTP_HOST} !
^www (NC) RewriteCond %{HTTP_HOST} !
^$ RewriteRule ^/(.*) http://www.%{HTTP_HOST}/$1 (L,R)
|
서버 관리자 [email protected]
문서 루트 /www/src
서버 이름 www.*.net
서버 별칭 *.net www.*.com *com www.*.co.kr *.co.kr www.*.kr *.kr
RewriteEngine 켜기
RewriteRule ^/act/((a-zA-Z0-9)+)/((a-zA-Z0-9)+)$ /구성원/?var1=$1&var2=$2 (R,L)
|
.
.
3. 특정 매개변수 값으로 입력 시 리디렉션
문서 루트 /home/www/public_html
서버 이름 www.domain.co.kr
서버 별칭 domain.co.kr
RewriteEngine 켜기
RewriteCond %{QUERY_STRING} ^(.*)mode=test$
RewriteRule ^/(.*) http://www.naver.com%{요청_URI} (패, 우)
|
모드 값이 테스트이면 네이버로 전송됩니다.
(R) 주소 표시줄을 URL로 변경합니다.
%{REQUEST_URI} : 호스트 부분 없이 디렉터리 부분에서 매개변수까지를 의미합니다.
전) http://www.sample.co.kr/abc/def.php?param=test
%{REQUEST_URI} 섹션은 “/abc/def.php?param=테스트” 나는 갈 것이다
.
참조) http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
.
4. 인덱스 교체
서버 관리자 [email protected]
문서 루트 /www/src
서버 이름 www.*.net
서버 별칭 *.net www.*.com *com www.*.co.kr *.co.kr www.*.kr *.kr
RewriteEngine 켜기
RewriteCond %{REQUEST_URI} !
^/index\.php RewriteRule ^/(.*)/idx.php (L)
|
.
* RewriteRule 작성 및 선언 방법
.
RewriteRule ^/sample/(.*)$ /shop/sample/$1 (L)
의 경우,
http://domainname/example/에 접속하면
http://domainname/shop/muster/ 주소 처리 및 표시,
브라우저에서 주소는 http://domainname/example/로 표시됩니다.
.
http://domainname/example/test/test.php에 접속하면
주소는 처리되어 http://domain name/shop/sample/test/test.php로 표시됩니다.
브라우저에서 주소는 http://domainname/example/test/test.php로 표시됩니다.
.
(L)은 정의된 마지막 줄을 의미합니다.
이 줄 뒤의 RewriteRule은 무시됩니다.
가장 마지막 줄에 작성하십시오.
아무것도 쓰지 않아도 괜찮습니다.
.
(R) 리디렉션을 수행합니다.
.
RewriteRule ^/sample/(.*)$ /shop/sample/$1 (L,R)
의 경우,
http://domainname/example/에 접속하면
http://domainname/shop/muster/ 주소 처리 및 표시,
브라우저는 주소를 http://domainname/shop/sample/로 표시합니다.
.
http://domainname/example/test/test.php에 접속하면
주소는 처리되어 http://domain name/shop/sample/test/test.php로 표시됩니다.
브라우저는 주소를 http://domainname/shop/sample/test/test.php로 표시합니다.
.
RewriteRule ^/blog/view/((0-9)+)/?$ /blog/view/index.php?id=$1
의 경우,
http://domainname/blog/view/1234/에 접속하면
http://domain name/blog/view/index.php?id=1234 및 보기
브라우저는 주소를 http://domainname/blog/view/1234/로 표시합니다.
“/”???”의 이유는? yahoo와 같은 검색 엔진은 URL 끝에 슬래시가 있는 URL을 색인에서 삭제하여 URL 끝에 슬래시로 액세스할 수 있는지 여부를 등록합니다.
하다
.
RewriteRule ^/abc/((0-9,az,AZ)+)/((0-9,-)+)/?$ /abc/test.php?id=$1&date=$2
의 경우,
http://domainname/abc/suzuki/2006-01-01/에 접속하면
http://domainname/abc/test.php?id=suzuki&date=2006-01-01로 표시됩니다.
브라우저는 주소를 http://domainname/abc/suzuki/2006-01-01/로 표시합니다.
.
* 샘플 RewriteRule
.
서버 이름 www.example.com
문서 루트 /테스트/htdocs
RewriteEngine 켜기
재작성 규칙 ^/샘플/(.*)$ /가게/샘플/$1
재작성 규칙 ^/블로그/뷰/((0-9)+)/?$ /블로그/뷰/index.php?id=$1
재작성 규칙 ^/abc/((0-9,az,AZ)+)/((0-9,-)+)/?$ /abc/test.php?id=$1&date=$2 (L)
옵션에는 ExecCGI MultiView가 포함되어 있습니다.
AllowOverrideAll
명령 허용, 거부
모든 사람이 허용
.
================================================== =====================
httpd.conf 파일, httpd-vhosts.conf 또는 루트 디렉토리의 .htaccess 파일
RewriteEngine 켜기
추가하면 재작성 엔진을 사용할 수 있습니다.
.
즉, 적용 할 수있는 세 곳이 있습니다.
1. 디렉토리에 쓰기
2. extra/httpd-vhosts.conf 파일의 각 가상 호스트
3. 각 디렉토리의 .htaccess 파일에서 사용 가능
vi /usr/local/apache/htdocs/.htaccess 또는 vi /home/webadmin/pubilc_html/.htaccess
에게
RewriteEngine 켜기 넣어야 가능하다
.
다음과 같은 정규식을 사용하여 URI를 변경할 수 있습니다.
재작성 규칙 ^오래된\.html$ new.html
.
위의 규칙은 “old.html” 요청을 (투명하게) “new.html” 요청으로 변환하여 처리합니다.
new.html로 나타나게 하려면 (R)을 플래그로 사용하십시오.
RewriteRule ^old\.html$ new.html(R)
.
다음 규칙은 정적 URI를 동적 URI로 변경하고 처리합니다.
정규식을 사용하여 여러 요청의 변환을 단순화할 수 있습니다.
RewriteRule ^products/((0-9)(0-9))/$ productinfo.php?prodID=$1
URL이 products/12/ 또는 products/90/인 경우 위 규칙이 적용됩니다.
내부적으로 productinfo.php?prodID=12 또는 productinfo.php?prodID=90
변경 및 처리(0-9)는 0에서 9까지의 난수를 의미합니다.
(az)는 소문자 a~z, (AZ)는 대문자 A~Z, (a-zA-Z)는 영문 한자를 의미합니다.
.
()로 묶인 부분을 역참조라고 하며 패턴에서 변수처럼 형변환을 하게 됩니다.
used 역참조 순서로 $1, $2의 형태로 사용됩니다.
위의 예에서 백링크가 있고 $1 부분이 교체되었습니다.
.
단, 상품/12 등의 문의는 처리할 수 없습니다.
‘/’가 없기 때문에
많은 가능성이 있지만 다음과 같은 규칙을 작성할 수 있습니다.
RewriteRule ^products/((0-9)(0-9))$ products/$1/ (R) <-- 플래그와 함께 규칙 재적용
RewriteRule ^products/((0-9)(0-9))/$ productinfo.php?prodID=$1
.
.
htaccess.
.htaccess(HyperTesxt Access)는 Apache 웹 서버의 디렉토리 수준을 설정하는 기본 파일입니다.
보지마. .htaccess는 특정 디렉토리에 상주하고 모든 하위 디렉토리를 포함하여 해당 디렉토리에 영향을 미치며 해당 파일이 있는 특정 폴더에 사용자 정의 요청 기능을 적용합니다.
파일명이 . 시작되면 Unix 운영 체제에 숨겨진 파일로 저장됩니다.
.
vi /도메인별 디렉터리 설정/.htaccess
문서 루트에 .htaccess 파일을 만들고 다음 내용을 추가합니다.
RewriteEngine 켜기
RewriteCond %{REQUEST_FILENAME} !
-f
RewriteCond %{REQUEST_FILENAME} !
-d
재작성 규칙 ^(.*)$ http://linuxkill.xyz/wordpress/test.php/$1
.
위와 같이 설정하면
.
linuxkill.xyz/ttt 이렇게 도메인을 입력하면
도메인에 linuxkill.xyz/wordpress/test.php/ttt로 표시됩니다.
linuxkill.xyz/wordpress/test.php에 연결됩니다.
.
RewriteCond 지시어는 RewriteRule과 함께 사용되는 규칙으로, RewriteCond 이후의 RewriteRule은 RewriteRule이 실행되기 위해 RewriteCond에 설정된 패턴과 일치해야 합니다.
.
-d : 디렉토리를 의미합니다.
TestString이 디렉토리를 가리키거나 디렉토리를 포함할 때 처리됩니다.
-f : 파일을 의미합니다.
TestString이 파일을 참조하거나 포함할 때 처리됩니다.
.
vi /도메인별 디렉터리 설정/.htaccess
RewriteEngine 켜기
RewriteCond %{HTTP_HOST} ^linuxkill\.xyz/wordpress$ (NC,OR)
RewriteCond %{HTTP_HOST} ^linuxkill\.xyz/((0-9)+) (NC)
재작성 규칙 ^(.*)$ http://ttt.linuxkill.xyz/$1 (R=301,엘)
.
위의 (NC)는 대문자와 소문자를 의미합니다.
(OR)은 프로그래밍에서 or와 유사합니다.
(R=301)은 검색 엔진이 강제로 재색인화됨을 의미합니다.
(즉, ttt를 추가하면 다시 나타납니다.
)
linuxkill.xyz에 연결하면 ttt가 자동으로 추가됩니다.
.
vi /도메인별 디렉터리 설정/.htaccess
RewriteEngine 켜기
RewriteCond %{REMOTE_HOST} ^linuxkill.xyz.* (OR)
재작성 규칙 ^(.*)$ http://www.naver.com/
.
linuxkill.xyz 도메인 접속 시 www.naver.com으로 리다이렉트하는 역할을 합니다.
Linuxkill.xyz.*는 linuxkill.xyz/ 이후의 문자 또는 숫자를 의미하며 naver.com으로 전달됩니다.
.
정규 표현식의 기본 형식
.
RewriteCond TestString CondPattern(조건 = 조건)
RewriteRule 패턴 교체(플래그)