Apache의 재작성 기술 사용
PHP 프로젝트를 수행할 때 URL 리디렉션 기술이 필요합니다. 기본 요구 사항은 URL에서 /user/heiyeluren을 /user.php?uid=heiyeluren 등으로 리디렉션하는 것입니다. 물론 /article/200707291011.html을 /article.php?id=200507291011 등으로 리디렉션할 수도 있습니다. 시뮬레이션은 URL의 실제 주소를 숨기고 기본적인 안전에 기여할 수 있는 정적 페이지처럼 보입니다. 장화 예방 등. 따라서 다시 작성하는 것이 좋은 해결책인 것 같습니다.
Apache에서 rewrite를 실행하려면 먼저 mod_rewrite.c 파일인 mod_rewrite 구성 요소를 설치한 다음 ./configure에 mod_rewrite를 넣어 설치해야 합니다.
일반적으로 rewrite를 구성하는 경우 httpd.conf에서 구성하거나 웹 페이지의 현재 디렉터리에 있는 .htaccess 파일에 정의하여 리디렉션할 파일을 결정할 수 있습니다. 매우 유연하며 가상 호스트 사용자에게도 적합할 수 있습니다.
.htaccess 파일의 예를 살펴보겠습니다.
1
2 RewriteEngine On
3 RewriteBase /
4 RewriteCond %{REQUEST_FILENAME} -f [OR]
5 RewriteCond %{REQUEST_FILENAME} -d
6 RewriteRule ^.*$ - [S=42]
7
8 #RewriteRule ^share/$ /share.php [QSA,L]
9 RewriteRule ^tag/([^/]+)/?$ /user_tags.php?tag=$1 [QSA,L]
10 RewriteRule ^ city/([^/]+)/?$ /user_city.php?tag=$1 [QSA,L]
11 #RewriteRule ^([^/]+)/day/([^/]+ )/ ?$ /user_share.php?id=$1&s=1&selTime=$2 [QSA,L]
12 #RewriteRule ^([^/]+)/day/([^/]+)/?$ / user_share.php?id=$1&s=1&selTime=$2 [QSA,L]
13
14 RewriteRule ^([^/]+)/day/([^/]+)/?$ /user_share. php? id=$1&s=1&selTime=$2 [QSA,L]
15 RewriteRule ^([^/]+)/week/([^/]+)/?$ /user_share.php?id=$1&s =2&selTime =$2 [QSA,L]
16 RewRiteRule ^([^/]+)/month/([^/]+)/?$ /user_share.php?id=$1&s=3&selTime=$2 [QSA ,L ]
17
18 RewriteRule ^([^/]+)/day/?$ /user_share.php?id=$1&s=1 [QSA,L]
19 RewriteRule ^([^ /] +)/week/?$ /user_share.php?id=$1&s=2 [QSA,L]
20 RewriteRule ^([^/]+)/month/?$ /user_share.php?id= $1&s =3 [QSA,L]
21
22 RewriteRule ^([^/]+)/?$ /user_share.php?id=$1 [QSA,L]
23
상대적으로 길기 때문에 핵심 내용만 집중적으로 살펴보겠습니다.
텍스트:
모든 단일 문자와 일치합니다.
[문자] 현재 문자와 일치합니다. 🎜> [ ^chars] 현재 문자와 일치하지 않습니다.
text1|text2에는 text1 또는 text2 중 하나가 포함됩니다.
? ? 기호 앞에
* 0개 또는 모든 길이의 문자
대안의 테두리가 없거나
N번째 그룹이 RewriteRule의 RHS에서 사용될 수 있는 경우
앵커:
^ 일치하는 콘텐츠 시작 태그
$ 일치하는 콘텐츠 종료 태그
char ".[]를 포함한 특수 문자를 이스케이프하는 데 사용됩니다. ()" 및 기타 문자
기본 규칙은 위와 같습니다. 예를 들어 다음 정규식은 ^/([^/]+)/~([^ /]+)/(.*)$는 /Language/~ Realname/../File 경로와 일치할 수 있습니다.
그러면 위의 내용을 이런 관점에서 이해하는 것이 더 쉬울 것입니다. RewriteRule 지시문의 규칙을 간략히 살펴보겠습니다.
RewriteRule 액세스 경로를 가리켜야 하는 실제 경로
RewriteRule ^user/([^/]+)$ ^/user.php?uid=$2 [QSA,L]
It 하나의 예시에서 추론을 이끌어내면 규칙을 이해하기 쉽습니다. 작성 방법은 위 규칙 스크립트의 내용을 이해하면 됩니다.
분명하지 않으나, 특정 내용에 대한 보다 자세한 이해를 위해서는 첨부된 링크를 참조하시기 바랍니다. 글이 좋지 않은 점 양해 부탁드립니다.
첨부파일:
Apache Rewrite 기술 http://www.yujs.com/recommendation/004.htm
Apache 모듈 mod_rewrite http://linux.dalouis.com/doc/apache2.0 /mod/mod_rewrite.html
URL 재작성 가이드 http://linux.dalouis.com/doc/apache2.0/misc/rewriteguide.html
Apache HTTP Server 2.0 버전 문서 http://linux.dalouis . com/doc/apache2.0/