>  기사  >  백엔드 개발  >  Apache의 재작성 기술 사용

Apache의 재작성 기술 사용

伊谢尔伦
伊谢尔伦원래의
2016-11-21 16:20:25875검색

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


상대적으로 길기 때문에 핵심 내용만 집중적으로 살펴보겠습니다. 사이의 내용은 RewriteEngine이 URL 재작성 기능을 실행할지 여부를 결정하는 것입니다. 가장 중요한 것은 다음과 같은 RewriteRule입니다. rewrite. Perl 규칙과 호환되는 정규 표현식이 여기에 적용됩니다:


텍스트:
모든 단일 문자와 일치합니다.
[문자] 현재 문자와 일치합니다. 🎜> [ ^chars] 현재 문자와 일치하지 않습니다.
text1|text2에는 text1 또는 text2 중 하나가 포함됩니다.


수량자:

? ? 기호 앞에
*       0개 또는 모든 길이의 문자
                                                                                                                                            대안의 테두리가 없거나
N번째 그룹이 RewriteRule의 RHS에서 사용될 수 있는 경우

$N)


앵커:
^ 일치하는 콘텐츠 시작 태그
$ 일치하는 콘텐츠 종료 태그

이스케이프:

char ".[]를 포함한 특수 문자를 이스케이프하는 데 사용됩니다. ()" 및 기타 문자


기본 규칙은 위와 같습니다. 예를 들어 다음 정규식은 ^/([^/]+)/~([^ /]+)/(.*)$는 /Language/~ Realname/../File 경로와 일치할 수 있습니다.

그러면 위의 내용을 이런 관점에서 이해하는 것이 더 쉬울 것입니다. RewriteRule 지시문의 규칙을 간략히 살펴보겠습니다.
RewriteRule 액세스 경로를 가리켜야 하는 실제 경로

이는 매우 명확합니다. 예를 들어 /user/heiyeluren을 /user로 리디렉션하고 싶습니다. .php?uid=heiyeluren 그렇다면 내 규칙은 다음과 같아야 합니다:

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/


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.