이 기사에서는 URL 재 작성 및 리디렉션 용 Apache의 Mod_rewrite 모듈에 대해 설명합니다. Mod_rewrite를 활성화하고, .htaccess 규칙을 작성하고 (예제와 함께) 비효율적 인 실수를 피하고 'l'플래그가 부족한 자세한 내용은 자세히 설명합니다. 공연
mod_rewrite 활성화 : mod_rewrite
를 사용하기 전에 Apache 구성에서 활성화되어야합니다. 여기에는 일반적으로 APACHE 구성 파일에서 줄을 끄는 것이 포함됩니다 (종종 시스템에 따라 /etc/httpd/conf/httpd.conf
또는 /etc/apache2/apache2.conf
에 있습니다). LoadModule rewrite_module modules/mod_rewrite.so
. 댓글이 댓글을 달면 ( #
앞에) #
제거하십시오. 이 변경 후 Apache 서버를 다시 시작하여 변경 사항이 적용됩니다. Apache를 다시 시작하기위한 정확한 명령은 운영 체제에 따라 다릅니다 (예 : sudo systemctl restart apache2
sudo apachectl restart
.
.htaccess 파일 생성 (또는 기본 Apache Config 편집) : mod_rewrite
규칙은 일반적으로 웹 사이트의 루트 디렉토리의 .htaccess
파일에 배치됩니다. 하나가없는 경우 .htaccess
라는 새 파일을 만듭니다. 원하는 경우 기본 Apache 구성 파일에 직접 규칙을 추가 할 수 있지만 .htaccess
사용하는 것이 일반적으로 개별 웹 사이트 구성에 더 편리합니다.
재 작성 규칙 작성 : mod_rewrite
의 핵심은 재 작성 규칙에 있습니다. 이 규칙은 특정 구문을 따릅니다.
이 라인 RewriteEngine On
다시 쓰기 엔진을 가능하게합니다. .htaccess
파일의 첫 번째 줄 여야합니다.
RewriteRule pattern substitution [flags]
이것은 주요 지침입니다.
pattern
: 다시 작성하려는 URL과 일치하는 정규 표현식입니다.substitution
: 이것은 당신이 리디렉션하려는 URL입니다. 배경 references ( $1
, $2
등)를 사용하여 패턴의 캡처 된 그룹을 참조 할 수 있습니다. flags
: 규칙의 동작을 수정합니다. 일반적인 플래그에는 다음이 포함됩니다.
L
(마지막) : 일치하는 경우이 후에 처리 규칙을 중지합니다.R
(리디렉션) : 외부 리디렉션 (301 또는 302)을 수행합니다. HTTP 상태 코드를 지정하십시오 (예 : R=301
).QSA
(Query String Append) : 원래 쿼리 문자열을 대체 된 URL에 추가합니다.NC
(사례 없음) : 사례에 민감한 경기를 수행합니다. 예 : /article.php?id=123
으로 다시 쓰기 /articles/my-article
다시 작성하고 싶다고 가정 해 봅시다.
<code class="apache">RewriteEngine On RewriteRule ^articles/my-article$ /article.php?id=123 [L]</code>
이 규칙은 /articles/my-article
정확하게 일치시키고 /article.php?id=123
으로 리디렉션합니다. L
플래그는 더 이상 규칙이 처리되지 않도록합니다.
1. mod_rewrite
의 과도한 사용 : 간단한 리디렉션의 경우 Apache의 내장 Redirect
지시문을 사용하는 것이 종종 mod_rewrite
보다 더 효율적입니다. mod_rewrite
복잡한 URL 변환에 가장 적합합니다.
2. 비효율적 인 정규 표현 : 잘못 쓰여지거나 지나치게 복잡한 정규 표현은 성능에 크게 영향을 줄 수 있습니다. 정규 표현을 간결하고 목표로 유지하십시오.
3. 누락되거나 잘못된 플래그 : L
과 같은 중요한 플래그를 잊어 버리면 예상치 못한 동작과 여러 리디렉션이 발생하여 잠재적으로 무한 루프가 발생할 수 있습니다. 각 깃발의 목적을 이해하고 적절하게 사용하십시오.
4. 쿼리 문자열 무시 : URL에 쿼리 매개 변수가 포함 된 경우 QSA
와 같은 플래그를 사용하거나 대체 문자열에 명시 적으로 통합하여 올바르게 처리해야합니다.
5. 철저하게 테스트하지 않음 : mod_rewrite
규칙을 구현 한 후 항상 철저히 테스트하십시오. 브라우저의 개발자 도구를 사용하여 HTTP 요청 및 응답을 검사하여 모든 것이 예상대로 작동하는지 확인하십시오.
6. 오류 처리 부족 : 규칙이 일치하지 않으면 오류를 방지하기위한 폴백 메커니즘을 갖는 것이 중요합니다. 기본 규칙 또는 특정 오류 페이지가 포함될 수 있습니다.
7. 보안 시사점 무시 : 신중하게 사용하지 않으면 mod_rewrite
이용할 수 있습니다. 디렉토리 트래버스 공격과 같은 잠재적 취약점을 방지하기 위해 다시 쓰기 규칙에서 사용자가 공급 한 입력을 직접 사용하지 마십시오.
mod_rewrite
규칙을 구현하면 최적화되지 않으면 서버 성능에 영향을 줄 수 있습니다. 성능을 향상시키는 방법은 다음과 같습니다.
L
플래그를 효과적으로 사용하십시오 : L
(마지막) 플래그는 중요합니다. 경기가 발견되면 Apache가 추가 규칙을 처리하는 것을 방지하여 처리 시간이 크게 줄어 듭니다. 가능할 때마다 사용하십시오.mod_rewrite
로 인한 증가 된 하중을 처리하십시오.mod_rewrite
규칙을 구현 한 후 서버 사용 메트릭 (CPU 사용, 메모리 사용, 응답 시간 등)을 추적합니다. 이렇게하면 잠재적 인 병목 현상을 식별하고 그에 따라 최적화하는 데 도움이됩니다.mod_rewrite
대신 Apache의 내장 Redirect
지침을 사용하십시오. 보다 복잡한 시나리오의 경우 URL 재 작성에 전용 리버스 프록시 (NGINX)를 사용하는 것과 같은 대체 접근 방식을 탐색하십시오. 예, mod_rewrite
는 SEO 친화적 인 URL을 만드는 강력한 도구입니다. SEO 친화적 인 URL은 일반적으로 더 짧고 설명 적이며 사용자와 검색 엔진 모두 이해하기가 더 쉽습니다. 종종 동적 URL (예 : /article.php?id=123
)을 클리너, 키워드가 풍부한 URL (예 : /articles/my-article
)로 대체합니다.
예 : ID 123이 포함 된 블로그 게시물이 있다고 가정 해 봅시다. 동적 url /blog.php?id=123
을 사용하는 대신 mod_rewrite
사용하여보다 seo 친화적 인 URL과 같은 /blog/my-amazing-post/
:
<code class="apache">RewriteEngine On RewriteRule ^blog/([^/] )/?$ blog.php?title=$1 [L,QSA]</code>
이 규칙은 URL의 제목 부분 (After /blog/
)의 제목 부분을 캡처하고이를 title
매개 변수로 blog.php
로 전달합니다. QSA
플래그는 기존 쿼리 매개 변수가 보존되도록합니다. id
매개 변수 대신 title
매개 변수를 처리하도록 blog.php
스크립트를 조정해야합니다.
다시 쓰기 규칙을 신중하게 제작함으로써 사용자 친화적이고 웹 사이트 SEO에 유리한 깨끗하고 설명적인 URL을 만들 수 있습니다. 그러나 SEO 친화적 인 URL을 만드는 것은 SEO의 한 측면 일뿐입니다. 또한 콘텐츠 품질, 사이트 구조 및 링크 빌딩과 같은 다른 요소에 중점을 두어야합니다.
위 내용은 mod_rewrite를 사용하여 URL 재 작성 및 리디렉션에 대한 Apache를 어떻게 구성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!