htaccess 파일은 영향을 미치는 서버 설정을 변경합니다. htaccess 파일을 생성하고 올바르게 구성하는 방법은 무엇입니까? 지정된 IP 주소를 제외한 모든 사람의 접근을 거부합니다.

(11 )

파일.htaccess Apache 웹 서버 및 유사한 서버의 설정을 변경하는 데 사용되는 전문 서비스 문서입니다. 간단히 말해서, 이를 사용하면 사이트 작동 방식을 변경하는 데 도움이 됩니다. 즉, 폴더, 파일 및 기타 자료에 대한 액세스 구성, 링크 재작성 규칙 및 오류 경고 지정 등이 가능합니다. 동시에 전체 서버의 기능을 변경하지 않고 일부 사용자에 대한 추가 매개변수만 구성합니다.

웹사이트 소유자가 자신의 프로젝트를 진행하다 보면 .htaccess 파일을 사용해야 할 때가 분명히 올 것입니다. 엄청난 중요성에도 불구하고 많은 웹마스터, 특히 초보자에게는 아직 알려지지 않은 상태입니다. 이를 이해하려면 SEO뿐만 아니라 프로그래밍에 대한 좋은 지식이 필요하기 때문입니다.

이 기사에서는 .htaccess가 필요한 이유와 이를 구성하는 방법을 이해하는 데 도움을 드립니다. 이는 리소스에 대한 안정적인 보안을 보장하려는 사이트 소유자에게 유연한 옵션을 제공하므로 매우 중요합니다.

이 파일에서 사이트 빌더는 다음을 수행할 수 있습니다.

  • 단순 리디렉션 지시문(리디렉션)을 구성합니다.이렇게 하면 도메인을 변경한 후 방문자를 이전 사이트 페이지에서 새 프로젝트로 보낼 수 있습니다.
  • www가 있는 URL에서 www가 없는 도메인으로 리디렉션. 또는 SSL 인증서를 설치한 후 https로.
  • 오류를 설명합니다.여기에는 필요한 페이지로 대체되는 404 오류가 포함됩니다.
  • 파일 캐싱.이는 웹 리소스의 작동 속도를 높이기 위해 수행됩니다.
  • CNC를 만듭니다.이는 "사람이 읽을 수 있는 URL"입니다. 즉, 인터넷 사용자가 이해할 수 있는 링크가 형성됩니다.
  • 페이지의 소스 코드를 변경합니다.
  • 비밀번호를 사용하여 파일 및 디렉터리에 대한 액세스를 제어합니다.
  • 인덱스 파일을 지정합니다.
  • 특정 IP 주소의 액세스를 허용하고 차단합니다.
  • 사이트에서 검색 봇을 관리합니다.
  • 복잡한 지시어를 구성합니다.

.htaccess의 주요 목적은 특정 요구 사항에 따라 사이트와 디렉토리를 사용자 정의하는 것입니다. 즉, 이 파일을 통해 SEO 전문가나 프로그래머는 관리자 권한 없이도 웹 서버 설정을 변경할 수 있습니다. 그러나 변경 사항은 특정 사이트에만 적용되며 서버 자체에는 어떤 영향도 미치지 않습니다.

서버 구성은 "키"와 "값"을 포함하는 지시문(명령)을 통해서만 변경됩니다. 서버를 관리할 수 있는 가장 중요한 지시문은 모두 httpd.conf라는 기본 구성 파일에 있습니다. 문제는 전체 서버의 성능에 영향을 미치는 많은 매개변수가 포함되어 있기 때문에 일반 사용자가 액세스할 기회가 없다는 것입니다. 이것이 .htaccess가 관련되어 있는 이유이며, 기본 파일의 일부 지시문을 변경할 수 있습니다.

보조 파일의 모든 조정 사항은 해당 파일이 위치한 전체 디렉터리에 영향을 미칩니다. 그리고 이 문서를 사이트의 루트 폴더에 업로드하면 변경 사항이 전체 리소스에 영향을 미칩니다.

.htaccess는 어디에 있습니까?

서비스 파일이 있는지 쉽게 확인할 수 있습니다. 이 문서는 단어에서 제목 형식의 확장만 있고 제목 자체는 없다는 점에서 다른 많은 문서와 다릅니다. 예, 우리 모두는 단어로 된 이름과 점 뒤에 확장자가 있는 파일을 보는 데 익숙합니다. 이는 2-3 글자로만 구성됩니다. 그러나 빈 이름을 사용하면 파일과 폴더를 "숨겨진" 오픈 소스로 만들 수 있습니다. 따라서 .htaccess는 일반 사용자에게 표시되지 않으므로 변경할 수 없습니다.

그러나 파일을 "숨기는" 이 방법에는 단점도 있습니다. Windows 및 Mac의 표준 FTP 클라이언트에서는 문서가 사용자에게 보이지 않는 경우가 많기 때문에 문서가 단순히 존재하지 않는다고 잘못 생각합니다. 따라서 사람은 자신의 구성, 오류 처리 코드, 폴더에 대한 액세스 생성 등을 입력하기 위해 새 파일을 만듭니다. 대부분의 경우 htaccess 파일이 이미 자동으로 설치된 디스크 공간을 남겨 두는 것이 좋습니다.

하지만 찾지 못했다면 호스팅에 내장된 파일 관리자로 이동해 보세요. 숨겨진 파일과 디렉터리를 표시할 수 있습니다. public_html에서 찾아서 프로그램에 설치된 텍스트 편집기를 이용해 파일을 편집하고 저장하면 자체적으로 서버에 업로드됩니다.

지정된 경로에서 문서를 찾을 수 없으면 직접 만드십시오. 화면에 오류가 나타나는 경우가 있습니다. 이는 해당 호스팅 업체가 서비스 파일 생성을 금지했음을 의미합니다.

저렴한 호스팅 서비스에서는 클라이언트가 그러한 문서를 생성하고 편집하는 것을 금지하는 경우가 많습니다. 따라서 허용되는 경우 더 비싼 가격으로 서비스를 사용하도록 권장됩니다.

.htaccess를 올바르게 생성하는 방법

이렇게 하려면 모든 PC에서 사용할 수 있는 메모장과 같은 가장 일반적인 텍스트 편집기가 필요합니다.

  1. 메모장을 열고 아무것도 쓰지 마세요.
  2. 아이템을 선택하세요 "파일"그리고 누르세요 "다른 이름으로 저장".
  3. 항목 반대편에 창이 나타납니다. "파일 형식"선택하다 « 모두종류"또는 "모든 파일".
  4. 줄을 서서 "파일 이름"입력하다 . htaccess그리고를 클릭하세요 "구하다".

그런 다음 문서가 올바르게 생성되었는지 다시 확인하세요. .htaccess.txt로 저장했는지 꼭 확인하세요. 그런 다음 파일을 서버의 루트 폴더에 업로드하고 500 오류가 표시되지 않으면 모든 작업을 올바르게 수행한 것입니다.

이제부터 파일을 편집하여 웹사이트를 보다 유연하게 관리할 수 있습니다.

사용 예

.htaccess에 대해 가장 많이 사용되는 명령을 살펴보겠습니다.

리디렉션

이러한 지시문은 부러울 만큼 규칙적으로 사용됩니다. 방문자를 이전 URL에서 새 페이지로 리디렉션할 수 있습니다. 이는 301 리디렉션 덕분에 가능합니다. 파일 코드를 작성하면 됩니다.

리디렉션 301 /old_URL.html http://www.your_site_name.ru/new_URL.html

일반적으로 지시문은 다음과 같이 표시됩니다.

리디렉션 URL_LOCAL URL_REDIRECT

URL_현지의– 사용자가 이전되는 이전 주소입니다.

URL_리디렉션– 페이지가 이동되는 새 URL입니다.

현장에서 [ 상태]다음 값을 가질 수 있습니다.

  1. 301 – 페이지가 영원히 이동되었습니다.
  2. 302 – 페이지가 일시적으로 이동되었습니다.
  3. 303 – 다른 페이지를 참조하세요.
  4. 410 – 페이지가 삭제되었습니다.

Mod_rewrite(복잡한 전송 지시어)

이 모듈은 Apache에 포함되어 있습니다. 고급 주소 관리에 대한 다양한 지침이 있습니다. 주요 내용은 다음과 같습니다.

1. 메인 미러 지정

도메인을 www에서 www가 아닌 ​​URL로 변환하도록 설계되었습니다. 규칙을 입력하면 충분합니다.

RewriteEngine On # RewriteCond %(HTTP_HOST) 활성화 ^www.your_site_name\ru$ # 리디렉션 시작 조건 RewriteRule ^(*)$ http://your_site_name_/$1 #conversion rule

2. https로 전송

오늘날 Google 검색 엔진은 사이트 소유자에게 보안 연결을 사용하도록 적극적으로 권장합니다. 이를 위해서는 다음 코드를 사용하여 사용자를 http에서 https로 리디렉션해야 합니다.

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URL)

3. 주소 끝에 슬래시 넣기

페이지 URL이 디렉터리 이름으로 끝나지 않도록 하려면 http://name_of_your_site.ru/catalog, 파일에 코드를 입력합니다.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

이 명령을 실행하면 앞으로 주소 뒤에 슬래시가 자동으로 추가됩니다. http://name_of_your_site.ru/catalog/

4. 도메인 이전

사이트 이름을 변경할 때 .htaccess에 다음을 지정하는 것을 잊지 마세요.

RewriteCond %(HTTP_HOST) ^www\.yoursite.ru\.ru$ RewriteRule ^(.*)$ http://www.your-site.ru/$1의 RewriteEngine

Yandex와 Google 모두에 대해 사이트를 최적화할 때 도메인 이름을 변경하면 불쾌한 결과가 발생할 수 있습니다. Yandex용 robots.txt의 지침은 301 리디렉션의 적용을 받습니다. 하지만 코드에 규칙을 추가하면 이를 방지할 수 있습니다.

RewriteCond %(REQUEST_FILENAME) robots.txt$의 RewriteEngine RewriteRule ^([^/]+) $1 [L] RewriteCond %(HTTP_HOST) ^mysite\.ru RewriteRule ^(.*)$ http://www.my-site .ru/$1

5. 검색봇에 금지된 명령어

.htaccess에서는 robots.txt와 마찬가지로 검색 엔진 로봇의 사이트 액세스를 차단할 수 있습니다.

RewriteCond %(USER_AGENT)의 RewriteEngine Googlebot RewriteRule .* - [F] # F – 오류 403 제공 – 크롤링이 허용되지 않음

오류 처리 중

거의 모든 인터넷 사용자가 404 찾을 수 없음 오류(페이지를 찾을 수 없거나 삭제됨)를 경험했습니다. 그러나 아마도 당신이 들어보지 못한 수많은 다른 오류가 있습니다.

서비스 파일에는 오류 발생 시 표시할 파일을 등록할 수 있습니다. 하지만 먼저 html 확장자로 동일한 파일을 생성하고 이 오류가 무엇인지 적어야 합니다. 그런 다음 사용 중인 오류에 따라 인코딩.htaccess에 다음을 추가하세요.

오류문서 404 /siteerror404.html

색인 문서

방문자가 사이트를 방문하면 인덱스 파일인 index.xml이 즉시 열립니다. 다음 코드를 추가하여 색인 페이지를 다른 페이지로 바꿀 수 있습니다.

디렉토리 인덱스 이름.xml

또는 이러한 페이지를 여러 개 추가하면 검색 엔진이 해당 페이지를 적절한 순서로 찾습니다.

디렉토리색인 index.html index.php index.pl

인코딩 지정

이 기능은 텍스트가 사용자 화면에 올바르게 표시되는지 확인하는 데 필요합니다. 그렇지 않으면 일반적으로 읽을 수 있는 페이지 대신 이상한 문자가 표시됩니다. 오늘날 다음 인코딩이 널리 사용됩니다. Windows-1251 – 키릴 문자 및UTF-8 – 더블바이트 인코딩. 서비스 문서에서 인코딩을 선택하려면 다음 지시문이 사용됩니다.

AddDefaultCharset WINDOWS-1251

그리고 나중에 파일을 서버에 업로드할 때 문제가 발생하지 않도록 모든 새 파일이 유사한 인코딩으로 변환된다는 점을 표시하십시오.

CharsetSourceEnc WINDOWS-1251

디렉토리에 대한 비밀번호 지정

이렇게 하려면 닫을 디렉토리에 다음을 작성하십시오.

AuthName "비밀번호 필요" #password 요청 메시지 AuthType Basic #authentication type AuthUserFile /passwords/.psd #로그인 비밀번호가 포함된 파일 이름 Require valid-user #액세스 권한이 있는 사용자 이름

파일 및 디렉터리에 대한 액세스

.htaccess 파일을 사용하면 특정 파일에 대한 액세스를 완전히 또는 부분적으로 거부할 수 있습니다. 시스템 디렉터리에 대한 액세스를 차단한다고 가정해 보겠습니다. 그런 다음 적절한 .htaccess에 다음을 작성하십시오.

모두 거부

test.php와 같은 특정 파일을 보는 것을 방지하려면 다음을 수행하십시오.

모두를 거부하다

이 명령을 사용하면 다른 IP에 대한 액세스를 거부하면서 특정 IP에 대한 탐색을 열 수 있습니다.

주문 거부, 모두 거부 허용 12.345.678.90부터 허용

결론

보시다시피 .htacces 서비스 파일은 웹 리소스의 전체 기능을 위한 가장 중요한 도구 중 하나입니다. 그리고 그 기능에 익숙해지면 이전에 이 파일에 대해 거의 알지 못했던 이유가 궁금했을 것입니다. SEO와 프로그래머가 서버 자체에 영향을 주지 않고 특정 사이트의 웹 서버 구성을 변경할 수 있는 효과적인 도구입니다.

덕분에 인터넷 프로젝트 소유자는 검색 엔진과 방문자에게 도메인 변경에 대해 알리고 새 도메인으로 이전하고, 전체 또는 특정 리소스 데이터에 대한 액세스를 차단하고, 승인되지 않은 사람이 수정 및 다운로드하는 것을 방지하고, 다음에 대한 액세스를 제공할 수 있습니다. IP와 비밀번호를 통해 특정 파일.

우리는 Apache httpd를 기본 웹 서버로 사용하고 있습니다. Apache는 전 세계 대부분의 웹 서버를 구성하는 데 사용되며 동급 제품 중 가장 인기 있는 제품입니다. 이 서버는 광범위한 구성 옵션을 갖고 있으며 매우 생산적이며 웹 서버 실행을 위해 알려진 모든 프로토콜을 지원합니다. Perl, PHP 등 널리 사용되는 프로그래밍 언어 버전은 Apache용으로 특별히 제작되었으며, 이 서버는 널리 사용되는 DBMS(예: MySQL)와도 쉽게 통합됩니다.

주요 프로젝트 웹사이트는 httpd.apache.org에 있고, 버전 1.3.xx에 대한 주요 문서는 httpd.apache.org/docs/에서 볼 수 있습니다.

.NET Framework의 적절한 지시어를 사용하여 Apache를 독립적으로 구성할 수 있는 기능을 사용자에게 제공합니다. 이렇게 하면 대량 호스팅 환경에서 대부분의 웹 서버 구성 문제를 해결할 수 있습니다.

인덱스 파일

인덱스 파일 또는 인덱스 파일은 특정 파일이 아닌 사용자가 웹을 통해 디렉터리에 접근할 때 기본적으로 열리는 파일입니다. 예를 들어, 방문자가 주소를 묻습니다. http://your_domain/price/, 여기서 가격은 카탈로그의 이름입니다. 인덱스 파일은 특정 파일 이름을 지정하지 않고 디렉터리에 액세스할 때 사용자에게 표시되는 파일입니다.

기본 색인 파일은 index.html, index.htm, index.php, index.php3, index.phtml, index.shtml, default.htm 또는 default.html입니다. 다른 파일을 먼저 열려면 현재 값을 재정의해야 합니다. 이를 수행하는 방법을 읽으십시오.

.htaccess 파일의 목적 및 사용

파일 .htaccess(파일 이름의 첫 번째 문자는 마침표입니다.) 호스팅 최종 사용자가 Apache 웹 서버를 관리하는 데 사용됩니다. 웹 서버가 승인하고 처리하며 사용자가 지정한 설정에 따라 작업을 수행하는 지시문을 이 파일에 배치합니다.

.htaccess 파일은 웹 서버의 루트 디렉토리에 위치할 수 있습니다(디렉토리에 직접 위치). www). 이 경우 해당 .htaccess의 지시문은 웹 서버 전체에서 유효합니다. 또한 .htaccess는 서버의 특정 하위 디렉터리에 있을 수 있습니다. 그런 다음 이 파일에 지정된 지시어는 디렉토리에 있는 "main" 파일의 지시어 동작을 "재정의"합니다. www또는 더 높은 수준의 디렉터리에 있습니다. 즉, .htaccess 지시어의 효과는 위에서 아래로 상속되지만 그 반대는 아닙니다. 파일에 대한 변경 사항은 즉시 적용됩니다. 이는 Apache 웹 서버에 액세스할 때마다 .htaccess의 정보가 다시 읽혀지기 때문입니다.

.htaccess에는 웹 서버에 사용 가능한 대부분의 지시어가 포함될 수 있습니다. 컨텍스트 필드에 .htaccess를 언급하지 않은 지시문은 이 구성 파일에서 사용할 수 없다는 점에 유의해야 합니다. AddType 지시문을 예로 사용하면 Context 필드에 .htaccess에 대한 참조가 포함되어 있으므로 이를 사용할 수 있습니다.

필수 지시어를 사용하지 못했고 .htaccess 에 지시어를 추가한 후 오류가 발생한 경우 가상 호스팅 조건에서 해당 명령의 사용이 금지되었을 가능성이 높습니다. 기술 지원에 문의하시면 도움을 드리겠습니다. 문제를 자세히 설명하고 이 지시문을 사용하여 달성하려는 목표를 표시하십시오.

웹 애플리케이션 방화벽

웹 응용 프로그램 방화벽(ModSecurity)은 웹 사이트에 대한 공격을 탐지하고 예방하는 데 필요합니다. 검사는 특정 규칙 집합에 따라 수행되며, 실패할 경우 오류(403 금지)와 함께 사이트에 대한 요청이 거부됩니다.

거짓 긍정의 경우 아래 옵션을 사용하여 .htaccess를 통해 규칙을 비활성화할 수 있습니다.

  • SecRuleRemoveById - ID로 규칙을 제거합니다.
  • SecRuleRemoveByTag - 태그별로 규칙을 제거합니다.

오류 로그 error.log에서 비활성화해야 하는 규칙을 결정할 수 있습니다.

ID로 비활성화하는 예:

SecRuleRemoveById 933100 933150

태그를 통한 비활성화의 예:

SecRuleRemoveByTag "공격-주입-php" SecRuleRemoveByTag "CWAF"

인코딩 재정의:

기본적으로 웹 서버는 Windows-1251 인코딩으로 서버에서 호스팅되는 모든 HTML 문서를 "전송"합니다. 웹 서버가 개인 계정에 정보를 "제공"하는 인코딩 유형을 변경할 수 있습니다.

이렇게 하려면 "서비스 트리" 섹션으로 이동하여 인코딩 유형을 변경해야 하는 도메인을 선택하세요. 다음 매개변수 목록에서 다음 행을 찾습니다. 인코딩(기본값)그리고를 클릭하세요 추가하다, 아래 그림과 같습니다.

.htaccess 파일을 사용하여 인코딩을 변경할 수도 있습니다. 이렇게 하려면 해당 줄을 추가하세요.

AddType "text/html; charset=koi8-r" .html .htm .shtml

이러한 .htaccess를 수신하면 Apache 웹 서버는 문서가 koi8-r로 인코딩되었음을 나타내는 헤더를 클라이언트 브라우저에 발행합니다.

리소스에 다양한 인코딩(ISO-8859-1, Windows-1250, Windows-1252, UTF-8)의 HTML 문서가 포함되어 있는 경우 Windows-1251 인코딩을 사용하여 헤더 강제 출력을 비활성화해야 할 수도 있습니다. 이렇게 하려면 .htaccess에 다음 줄을 추가하세요.

AddDefaultCharset 끄기

이 경우 해당 인코딩을 각 HTML 페이지에 태그 형태로 작성해야 합니다.

예: 비밀번호로 디렉토리를 닫는 방법

.htaccess를 사용하여 해결되는 표준 작업 중 하나는 서버의 특정 디렉터리에 대한 액세스를 제한하는 것입니다. 예를 들어, 개별 방문자에게 특정 디렉토리에 대한 액세스 권한을 부여하고 고유한 로그인 및 비밀번호를 제공해야 합니다.

비밀번호로 액세스를 제한하려는 디렉토리에서 다음 지시문을 사용하여 .htaccess 파일을 만듭니다.

AuthType 기본 AuthName "Some Name" AuthUserFile /home/ uXXXXX/.htpasswd에는 유효한 사용자가 필요합니다.

/home/uXXXXX/.htpasswd우리 서버 디스크에 있는 비밀번호 파일의 전체 경로를 나타냅니다. 예를 들어, FTP를 통해 서버에 액세스할 때 이동하는 홈 디렉토리에 .htpasswd 파일(비밀번호 포함)을 배치하면 이 파일의 경로는 다음과 같습니다. /home/uXXXXX/.htpasswd, 어디 uXXXXX— 가상 플랫폼의 이름(예: u12345)

AuthUserFile 지시문에서 우리는 로그인/비밀번호가 있는 파일의 절대 경로를 지정합니다. 이 경로는 나중에 생성할 것입니다. 텍스트 편집기를 사용하여 서버에서 직접 생성하지 않고 컴퓨터에서 .htaccess 파일을 생성하는 경우 .htaccess는 FTP를 통해 전송되어야 한다는 점에 유의하세요. 엄격하게 텍스트(ASCII) 모드에서.

비밀번호 파일을 생성합니다. 비밀번호 파일에는 다음과 같은 줄이 포함되어야 합니다. 로그인 비밀번호. 비밀번호는 MD5 알고리즘을 사용하여 암호화되어야 합니다. 그러한 파일을 생성하는 한 가지 방법은 Apache에 포함된 프로그램인 htpasswd를 사용하는 것입니다(우리 서버에서는 다음 디렉토리에 있습니다). /usr/로컬/빈/, 전체 경로 - /usr/local/bin/htpasswd).

서버에서 직접 유닉스 셸에서 비밀번호 파일을 생성하는 방법을 살펴보겠습니다. 셸로 이동하여 다음 명령을 실행해 보겠습니다.

  • htpasswd -mbc .htpasswd user1 sNQ7j9oR2w새 .htpasswd 파일을 생성하고 여기에 명령줄에 지정된 비밀번호를 사용하여 사용자 user1에 대한 항목을 추가합니다. 요구 반드시 sNQ7j9oR2w를 사용자 정의 비밀번호로 바꾸십시오. 이 비밀번호는 여기에 예시로만 표시되어 있습니다.
  • htpasswd .htpasswd user2는 사용자 user2의 기존 .htpasswd 파일에 추가되고 프로그램의 해당 요청에 대한 응답으로 비밀번호가 수동으로 입력됩니다.

Windows를 사용하고 있으며 Unix 쉘을 사용하여 비밀번호를 생성하고 싶지 않은 경우 Windows 버전의 htpasswd 프로그램을 다운로드하고 컴퓨터에 비밀번호가 포함된 파일을 만든 다음 서버에 업로드할 수 있습니다. Windows 버전의 Apache가 이미 설치되어 있는 경우 파일 htpasswd.exe카탈로그에서 확인하실 수 있습니다 프로그램 파일\Apache 그룹\Apache\bin\.

따라서 htpasswd.exe를 다운로드하여 이를 사용하여 다음과 같은 비밀번호를 생성하십시오.

  • htpasswd.exe -mc .htpasswd 사용자1새 비밀번호 파일 htpasswd.exe를 생성하면 비밀번호와 확인이 대화식으로 요청됩니다.
  • htpasswd.exe -m .htpasswd 사용자2사용자 user2를 기존 비밀번호 파일 htpasswd.exe에 추가하고 대화식으로 비밀번호를 묻는 메시지를 표시합니다.

모든 로그인이 생성된 후 파일을 서버에 업로드해야 합니다.

예: 인덱스 파일 재정의

상황: 사용자가 카탈로그에 액세스했습니다. http://www.your_domain.ru/price/.이러한 요청을 하면 첫 번째 요청이 열리고 표시됩니다. 인덱스 파일을 재정의하여 먼저 열리는 index.htm이 아닌, 예를 들어 파일이 myindex.php, 해당 디렉토리의 .htaccess 파일에 다음 지침을 배치하여 이 작업을 수행할 수 있습니다.

디렉토리 인덱스 myindex.php

해당 콘텐츠가 포함된 .htaccess를 수신하면 Apache 웹 서버는 기본적으로 파일을 엽니다. myindex.php.

예: 목록 발행 금지 및 허가

어떤 경우에는 기본적으로 표시되는 디렉터리에 파일이 없는 경우 디렉터리에 있는 파일 목록(디렉터리 목록)을 표시해야 합니다. 이렇게 하려면 .htaccess에 다음 줄을 추가해야 합니다.

옵션 +인덱스

.htaccess 파일은 목록을 허용하려는 정확한 디렉터리에 생성되어야 합니다. 이 지시어는 모든 하위 디렉터리에도 적용됩니다(이는 가상 호스트 설정에서 기본적으로 활성화된 지시어에 의해 달성됩니다) 모두 무시 허용).

지시문은 기본적으로 활성화되어 있습니다. 옵션 - 인덱스, 이 경우 HTTP 오류 403이 발생합니다.

파일 이름의 인코딩이 올바르게 표시되지 않으면 Charset 속성을 사용하여 원하는 인코딩을 지정하십시오. 예를 들어 UTF-8 인코딩으로 키릴 문자를 표시하려면 .htaccess 파일에 다음 명령을 추가합니다.

IndexOptions 문자 집합=UTF-8

예: 사용자 정의 오류 페이지

예: 일부 IP 주소의 액세스 차단

때로는 특정 IP 주소에서 사이트 또는 그 일부에 대한 액세스를 차단해야 하는 경우가 있습니다.

이 경우 원하는 디렉터리에 지시문이 포함된 .htaccess 파일을 생성해야 합니다. 예를 들어 IP 주소 172.16.16.16의 액세스를 거부하려면 다음을 수행합니다.

주문 허용, 거부 허용 172.16.16.16부터 모두 거부

이제 IP 주소로 사이트에 접속하려고 하면 172.16.16.16 방문자는 403 오류 또는 이 오류에 대한 페이지를 받게 됩니다.

양식에 주소의 일부 지정 172.16.16 서브넷의 액세스가 제한됩니다. 172.16.16/24.

때로는 반대로 귀하의 IP를 제외한 모든 IP에 대해 사이트에 대한 액세스를 차단해야 할 때도 있습니다(). 예를 들어, IP 주소 172.16.16.16에 대한 액세스만 허용하려면 .htaccess 파일에 다음 문을 추가합니다.

주문 허용, 거부 허용 172.16.16.16부터

Apache 설명서에서 더 자세한 설명서를 찾을 수 있습니다.

예: 일부 파일에 대한 액세스 거부

때로는 특정 파일에 대한 액세스를 거부해야 하는 경우도 있습니다. 예를 들어 데이터베이스, 인터페이스 등에 대한 액세스 세부 정보가 포함된 구성 파일에 해당됩니다. 파일에서 말하자 구성.cfg데이터베이스에 액세스하기 위한 로그인/비밀번호를 저장합니다. 다음 지시문을 사용하여 이 디렉터리에 .htaccess 파일을 만듭니다.

주문 허용, 거부 모두 거부

이제 방문자가 브라우저에 이와 같은 내용을 입력하면 http://www.your_domain.ru//config.cfg, 403 오류 또는 이 오류에 대한 페이지가 수신됩니다.

예: 마지막으로 수정된 헤더

어떤 경우에는 웹 서버가 HTTP 헤더를 발행해야 하는 경우도 있습니다. 최종 수정됨. 예를 들어 Yandex에 리소스를 등록하면 "잘못된 날짜"라는 오류가 나타납니다. 정적 문서의 경우 서버는 항상 마지막으로 수정된 값을 반환합니다. 이는 html 파일에 유효합니다. SSI의 경우 "XBitHack full" 지시문이 지정되고(이 줄을 .htaccess에 작성) 액세스되는 파일에 그룹 세트에 대한 "실행 가능" 속성이 있는 경우 서버는 마지막으로 수정된 값을 출력합니다. 스크립트에서 last-modified는 다른 방법으로 실행됩니다. 예를 들어, PHP 스크립트가 코드를 동적으로 생성한다는 점을 고려하면 가장 논리적인 것은 현재 날짜와 시간을 마지막으로 수정된 것으로 제공하는 것입니다./>

이는 다음과 같이 구현됩니다.

주의: 팀 머리글스크립트가 사용자 브라우저에 HTML 텍스트 출력을 시작하기 전에 PHP 스크립트에서 실행되어야 합니다.

.htaccess 파일은 Apache 서버와 기타 여러 서버를 구성하는 데 사용됩니다. 이상한 확장명에도 불구하고 모든 편집기에서 수정할 수 있는 간단한 텍스트 파일입니다. 이 튜토리얼에서는 프로젝트에서 .htaccess를 어떻게 사용할 수 있는지 살펴보겠습니다.

.htaccess 파일은 Apache의 기본 구성 파일인 httpd.conf와 동일한 형식을 사용합니다. 대부분의 설정은 두 파일 모두에서 사용할 수 있습니다.

디렉토리의 .htaccess 파일에 지정된 설정은 해당 디렉토리 및 하위 디렉토리에 대해 httpd.conf에 지정된 설정보다 우선합니다.

.htaccess 파일은 해당 파일이 포함된 디렉터리에 대한 요청이 있을 때마다 서버가 이를 읽기 때문에 동적 구성 파일이라고도 합니다. 이는 기본 구성 파일의 변경 사항과 달리 .htaccess 파일의 변경 사항이 서버를 재부팅하지 않고도 즉시 적용된다는 것을 의미합니다. 이는 또한 .htaccess 파일을 사용할 때 성능이 약간 저하된다는 의미이기도 합니다. 하지만 메인 서버 구성 파일에 접근할 수 없는 경우에는 매우 편리합니다.

리디렉션 및 URL 변경

.htaccess 파일의 일반적인 용도는 리디렉션 또는 URL 변경을 설정하는 것입니다. 이 방법은 도메인 이름을 변경하거나, 프로젝트의 파일 구조를 다시 작성하거나, 길고 기억하기 어려운 URL을 간단하고 이해하기 쉽게 만들어 SEO 목적에 도움이 됩니다.

리디렉션

리디렉션은 매우 간단할 수 있습니다. 예를 들면 다음과 같습니다.

리디렉션 301 ^old\.html$ http://localhost/new.html

이 경우 HTTP 상태 코드는 301(영구적으로 이동됨)이고 old.html에 대한 모든 요청은 new.html로 리디렉션됩니다. 이는 정규식을 사용하여 URL이 규칙과 일치하는지 확인하므로 규칙 구성이 복잡해지지만 URL이 정확하다는 확신을 줍니다. 리디렉션이 발생하는 리소스의 전체 URL을 지정해야 합니다.

변경 사항

변경 규칙은 매우 간단할 수도 있습니다.

RewriteRule ^old\.html$ new.html의 RewriteEngine

이 예에서는 브라우저의 주소 표시줄 내용을 변경하지 않고 투명하게 수행되는 한 파일에서 다른 파일로의 간단한 리디렉션이 발생합니다. 첫 번째 지시문인 RewriteEngine on 은 단순히 재작성 엔진이 실행 중인지 확인합니다.

방문자의 브라우저 주소 표시줄 내용을 업데이트하려면 RewriteRule 끝에 R 플래그를 사용할 수 있습니다.

RewriteRule ^old\.html$ http://hostname/new.html

r 플래그는 외부 리디렉션을 유발하므로 URL은 새 페이지에 해당합니다. 플래그에 대한 상태 코드를 사용하면 방문자의 브라우저에서 페이지가 새로 고쳐질 수도 있습니다.

리디렉션의 한 가지 가능한 용도는 방문자와 크롤러를 위해 URL을 더 간단한 형식으로 변경하는 것입니다. 예를 살펴보겠습니다:

RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) product.php?cat=$1&brand=$2&prod=$3

이 규칙을 사용하면 방문자는 다음과 같은 URL을 사용할 수 있습니다. 제품/턴테이블/기술/sl1210, 이는 다음과 같이 변환됩니다. product.php?cat=턴테이블& 브랜드=테크닉스&prod=sl1210.예제 정규식에서 슬래시 사이의 괄호는 그룹화를 수행합니다. 각각을 $1 , $2 및 $3 으로 사용할 수 있습니다. 대괄호 안의 [^/]+ 조합은 수량에 관계없이 슬래시를 제외한 모든 문자와 일치합니다.

실제로 URL 변경에는 예제에 설명된 것보다 훨씬 더 복잡한 규칙이 있지만 매우 복잡한 문제를 해결할 수 있습니다.

사용자 정의 오류 페이지

웹사이트에 표준 404 페이지를 표시하는 것은 비현실적입니다. 많은 사이트에서는 이 기능을 사용하여 나머지 콘텐츠 스타일과 일치하는 오류 페이지를 방문자에게 표시하고 방문자를 단념시킬 수 있는 추가 정보를 제공합니다.

404 페이지를 변경하는 규칙은 리디렉션 규칙과 매우 유사합니다.

오류문서 404 "/404.html"

404 오류가 발생하면 지정된 페이지가 표시됩니다. 다른 서버 오류를 표시하는 페이지를 만들 수도 있습니다.

특정 리소스에 대한 액세스 제한

.htaccess 파일을 사용하면 모든 파일이나 디렉터리에 대한 액세스를 제한할 수 있습니다. 예를 들어, 코드는 다음과 같습니다.

AuthName "사용자 이름과 비밀번호 입력" AuthUserFile /path/to/.htpasswd 유효한 사용자 필요 AuthType Basic

공개 액세스로부터 보호해야 하는 디렉토리에 배치해야 합니다. AuthName 지시문은 비밀번호 대화 상자에 표시될 메시지를 지정하고 AuthUserFile 규칙은 .htpasswd 파일의 경로를 지정합니다. Require 지시문은 등록된 사용자만 파일에 액세스할 수 있도록 지정합니다.

특정 파일을 보호하려면 위 코드를 지시어로 묶어야 합니다. , 파일 이름을 정의합니다.

AuthName "사용자 이름과 비밀번호 입력" AuthUserFile /path/to/.htpasswd 유효한 사용자 필요 AuthType Basic

이 기능을 사용하려면 콜론으로 구분된 사용자 이름 목록과 개인 리소스에 액세스하기 위한 암호화된 비밀번호가 포함된 .htpasswd 파일이 필요합니다. 이 파일은 네트워크에서 액세스할 수 없는 디렉터리에 저장되어야 합니다. 비밀번호는 암호화된 형식으로 저장되어야 하기 때문에 이러한 파일을 자동으로 생성하는 다양한 도구가 있습니다.

특정 방문자의 접근을 차단합니다

.htaccess 파일의 또 다른 용도는 특정 IP 주소 또는 에이전트의 모든 요청을 빠르고 쉽게 차단하는 것입니다. .htaccess 파일에 다음 규칙을 추가하기만 하면 됩니다.

주문 허용, 거부 192.168.0.1에서 거부 모두에서 허용

order 지시어는 허용/거부 지시어를 고려할 순서를 Apache 서버에 알려줍니다. 이 예에서는 허용 지시문이 먼저 평가된 다음 거부됩니다. 모든 허용 규칙이 먼저 고려되며(거부 규칙 이후의 파일에 정의되어 있음에도 불구하고) 모든 IP 주소가 허용됩니다. 그런 다음 클라이언트의 IP 주소가 거부 지시어에 지정된 주소와 일치하면 액세스가 차단됩니다. 예를 들어 다음과 같이 지정하여 IP 주소 범위에 대한 액세스를 차단할 수 있습니다. 192.168 .

특정 에이전트에 대한 액세스를 차단하려면 다른 규칙을 사용할 수 있습니다.

RewriteCond %(HTTP_USER_AGENT) ^OrangeSpider RewriteRule ^(.*)$ http://%(REMOTE_ADDR)/$

이 예에서는 HTTP_USER_AGENT 문자열이 OrangeSpider(불량 봇)로 시작하는 모든 클라이언트가 원래 주소로 리디렉션됩니다. 정규식은 임의 개수의 문자(*)에서 단일 문자(.)와 일치하며 변수 %(REMOTE_ADDR)가 주소에 사용됩니다. l 플래그는 이 규칙이 클라이언트에 대한 마지막 규칙이며 다른 작업을 수행할 필요가 없음을 Apache 서버에 나타냅니다.

IE의 출력 모드 지정

서버가 특정 요청에 응답하는 방식을 제어하는 ​​것 외에도 IE에 특정 렌더링 메커니즘을 알려주는 등 사용자의 브라우저에 영향을 줄 수 있습니다. X-UA-Compatible 헤더를 설정하기 위해 mod_headers 모듈을 사용할 수 있습니다:

헤더 세트 X-UA-Compatible "IE=Edge"

.htaccess 파일에 이 줄을 추가하면 IE가 사용 가능한 최상의 출력 모드를 사용하도록 지시합니다. 규칙을 사용하면 필요하지 않은 파일에 대해 이 헤더를 사용하지 않을 수도 있습니다. :

헤더가 설정되지 않음 X-UA 호환

캐싱 활성화

캐싱은 설정이 매우 쉽고 사이트 로드 속도를 높여줍니다. 거의 변경되지 않는 리소스에 대해 새로 고침 날짜를 설정하면 동일하게 유지되는 콘텐츠 부분이 반복적으로 다운로드되는 것을 방지할 수 있습니다.

예를 들어:

ExpiresByType에 대한 ExpiresActive image/gif "1개월 액세스 추가" ExpiresByType image/png "1개월 액세스 추가" ExpiresByType image/jpg "1개월 액세스 추가" ExpiresByType image/jpeg "1개월 액세스 추가" ExpiresByType video/ogg "1개월 액세스 추가" 월" ExpiresByType audio/ogg "액세스 + 1개월" ExpiresByType video/mp4 "액세스 + 1개월" ExpiresByType video/webm "액세스 + 1개월"

모든 콘텐츠 유형에 대해 ExpiresByType 규칙을 추가할 수 있습니다. ExpiresActive on 지시어는 단순히 리소스의 만료 헤더 생성을 활성화합니다. 이 지시문은 모듈의 존재 여부에 따라 달라집니다. mod_expires아파치 서버에서.

압축 허용

리소스 성능에 영향을 미치는 또 다른 방법은 압축을 사용하는 것입니다.

FilterDeclare COMPRESS FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css FilterProvider COMPRESS DEFLATE resp=Content-Type $text/javascript FilterChain COMPRESS FilterProtocol COMPRESS DEFLATE 변경=yes;byteranges=no

이 압축 방식은 모듈이 설치된 새 버전의 Apache(2.1+)에서 작동합니다. mod_filter. DEFLATE 알고리즘을 사용하여 콘텐츠를 압축합니다. 예제에서는 압축할 리소스 유형으로 text/html , text/css 및 text/javascript를 지정합니다.

필터 정의는 COMPRESS 옵션이 있는 FilterDeclare 지시문으로 시작됩니다. 그런 다음 필터가 적용될 콘텐츠 유형을 나열합니다. FilterChain 규칙은 FilterProvider 규칙 목록을 기반으로 체인을 구축하도록 서버에 지시합니다. FilterProtocol 지시문을 사용하면 실행 중에 필터가 사용하는 옵션을 지정할 수 있습니다. change=yes(필터에 의해 콘텐츠가 변경될 수 있음(이 예에서는 압축됨)) 및 byteranges=no(필터는 전체 파일에만 사용할 수 있음) 옵션을 지정해야 합니다.

이전 버전의 Apache에서는 모듈을 사용합니다. mod_deflate DEFLATE 압축을 구성합니다. 필터를 제어하는 ​​옵션은 더 적지만 규칙은 더 간단합니다.

SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/html text/css text/javascript

이 예에서는 SetOutputFilter 규칙을 사용하여 압축 알고리즘을 설정하고 AddOutputFilterByType 규칙을 사용하여 필터에 대한 콘텐츠 파일 형식을 결정합니다.

일반적으로 서버는 Apache 서버 버전에 따라 설명된 모듈 중 하나를 사용합니다. 일반적으로 어떤 모듈이 사용될지 알고 있습니다. 그러나 다른 서버에서 사용할 수 있는 일반 htaccess 파일을 생성하는 경우 지시어를 사용하여 두 규칙 세트를 모두 포함할 수 있습니다. . 이렇게 하면 필요한 규칙이 사용되며 구성 파일에 제거된 모듈에 대한 규칙이 포함된 경우 500 오류 생성을 방지할 수 있습니다. 또한 하나의 프로세서 유닛에서 많은 수의 사이트를 지원하는 호스팅에 서버를 배치할 때 큰 부하가 발생하지 않도록 압축을 비활성화할 수 있다는 점도 기억해야 합니다.

결론

이 튜토리얼에서는 htaccess 파일의 가장 일반적으로 사용되는 용도를 다룹니다. 여기에 제공된 정보는 매우 인기 있는 주제에 대한 소개입니다. 탐색하고 활용할 가치가 있는 다른 많은 옵션과 구성이 있습니다.

.htaccess(이름 앞에 점이 있음)은 Apache 서버용 구성 파일로, 기본 구성 파일(apache/conf/httpd.conf)에 대한 액세스를 제공하지 않고도 별도의 디렉터리(폴더)에 서버를 구성할 수 있게 해줍니다. . 예를 들어 디렉터리의 파일에 대한 액세스 권한을 설정하고, 인덱스 파일의 이름을 변경하고, Apache 오류를 독립적으로 처리하고, 방문자를 특수 오류 페이지로 리디렉션합니다. .htaccess확장자가 htaccess인 일반 텍스트 문서입니다. 이 파일은 일반적으로 사이트의 루트에 있지만 사이트의 다양한 디렉터리에 대한 추가 .htaccess 파일을 만들 수 있습니다.

Mod_rewrite- 웹 서버가 URL을 변환하는 데 사용하는 모듈입니다.

mod_rewrite를 사용하여 수행된 모든 작업을 기록하려면 httpd.conf에서 다음 항목을 사용하여 이를 활성화할 수 있습니다:

RewriteLog /usr/local/apache/logs/mod_rewrite.log RewriteLogLevel 1

Mod_rewrite 모듈 지시어

가장 일반적으로 사용되는 옵션

%(REQUEST_URI) 요청 문자열(도메인 이름 및 GET 매개변수 없음), 예: "/server/htaccess/"
%(HTTP_HOST) 도메인 이름(예: "max22.ru")
%(QUERY_STRING) 문자열 GET 매개변수

.htaccess 파일을 사용하여 리디렉션을 구현하기 위한 옵션

  1. 단순 리디렉션:
    301 / http://www.domainname.ru/를 리디렉션하거나 /secret http://www.site.ru/nosecret을 리디렉션하거나 # 정규식 RedirectMatch 301 .* http://www.site.ru/?를 사용하여 리디렉션합니다. .htaccess또는 httpd.conf아파치의 경우. 첫 번째 "/"는 모든 하위 디렉터리를 포함하여 사이트 최상위 수준의 모든 항목이 리디렉션된다는 의미입니다(마지막 "/"를 입력하는 것을 잊지 마세요). 이전 페이지의 PR을 유지하면서 페이지만 리디렉션하려는 경우 다음을 수행할 수 있습니다.

    301 /old/old.htm http://www.you.ru/new.htm 리디렉션:
    /old/old.htm - 이전 페이지의 경로 및 이름
    http://www.you.com/new.htm - 이동된 페이지의 새 경로 및 새 이름

  2. 사용자 IP를 사용하거나 특정 페이지를 요청할 때(네임 마스크도 포함) 모든 페이지로 리디렉션됩니다.
    사용자의 IP가 192.152.37.125인 경우 user.php 페이지로 리디렉션됩니다: SetEnvIf REMOTE_ADDR 192.152.37.125 REDIR="redir" RewriteCond %(REDIR) redir RewriteRule ^/$ /user.php
  3. 특정 파일을 요청할 때 리디렉션합니다. .htaccess 파일(gif 및 jpg)에 확장자가 지정되지 않은 파일이 요청되면 리디렉션은 다음과 같습니다: RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
  4. mod_rewrite 사용:
    옵션 +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yourdomain\.ru RewriteRule ^(.*)$ http://www.yourdomain.ru/$1
  5. 정규식으로 리디렉션:
    RedirectMatch 301 (.*) http://www.yourdomain.ru$1 .htaccess 파일에 등록됩니다. (.*) RedirectMatch실제로 도메인 이름 뒤의 정규식 패턴과 일치합니다. 따라서 ^/yourdomain.ru의 패턴을 일치시키는 것은 불가능합니다. 그러나 .html 확장자를 사용하는 페이지를 이름은 같지만 확장자가 .php인 파일로 변환할 수 있습니다. RedirectMatch 301 (.*)\.html$ http://www.yourdomain.ru$1.php 필요한 경우 개별 페이지에 대해 다른 리디렉션을 수행하려면 다음을 사용할 수 있습니다: RedirectMatch Permanent ^/html/resources.html$ http://www.newdomain.com/resources.php RedirectMatch Permanent ^/html/other_page.html$ http: //www.newdomain.com /other_page.php RedirectMatch 영구 ^/(.*)$ http://www.newdomain.com/ " RedirectMatch 영구"는 "RedirectMatch 301"과 동일하며 "*(와일드카드)"가 있는 줄이 이 목록의 마지막 줄이어야 합니다.
  6. 읽기 쉬운 URL 만들기
    예를 들어 www.site.ru/product.php?id=123을 www.site.ru/product/123으로 변환하려면 다음과 같이 하십시오: RewriteRule ^product/([^/\.]+)/?$의 RewriteEngine product .php?id=$1 [L] 다음 예에서는 www.site.ru/script.php?product=123을 www.site.ru/cat/product/123/으로 변환합니다. RewriteRule cat/(.* )/(. *)/$ /script.php?$1=$2
  7. PHP로 리디렉션:
    header("HTTP/1.1 301 영구적으로 이동됨"); header("위치: http://www.newdomain.ru/newdir/newpage.htm"); 출구(); 당연히 페이지를 생성해야 하며, 액세스하면 리디렉션이 발생하여 서버에 배치됩니다. 그리고 (공유 호스팅을 지원하지 않는 HTTP/1.0이나 HTTP/0.9보다는) HTTP/1.1을 지정하는 것이 더 좋습니다.
  8. 폴더의 모든 파일을 하나의 파일로 리디렉션합니다.
    예를 들어, 사이트의 슈퍼 할인 섹션이 더 이상 필요하지 않으며 /superdiscount 폴더에 대한 모든 요청을 단일 파일 /hot-offers.php로 리디렉션하려고 합니다. 이렇게 하려면 .htaccess에 다음 코드를 추가하세요. RewriteRule ^superdiscount(.*)$ /hot-offers.php
  9. 하나의 파일을 제외한 전체 폴더 리디렉션
    다음 예에서는 /superdiscount 폴더의 모든 파일이 /hot-to-make-million.html로 리디렉션되어야 하는 /superdiscount/my-ebook.html 파일을 제외하고 /hot-offers.php 파일로 리디렉션됩니다. RewriteRule ^superdiscount/my -ebook.html /hot-to-make-million.html RewriteRule ^superdiscount(.*)$ /hot-offers.php
  10. 동적 URL을 새 파일로 리디렉션합니다.
    이 옵션은 매개변수가 포함된 동적 URL을 새 정적 파일로 리디렉션하려는 경우에 유용합니다. RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm 이는 이제 http://www.kass.ws/article.jsp?id=8632 및/또는 http와 같은 파일에 대한 요청입니다. //www .kass.ws/article.jsp?id=1245는 http://www.kass.ws/latestnews.htm 파일로 전송됩니다.
  11. 새 파일의 대량 리디렉션.
    이제 예를 들어 CMS를 변경한 후 많은 URL을 리디렉션해야 하는 가장 어려운 순간으로 넘어가겠습니다. 여기서 즉시 여러 가지 문제가 발생합니다. 첫째, 변경된 주소를 모두 .htaccess 파일에 입력하는 데 시간이 많이 걸리고 작업 자체가 즐겁지 않습니다. 둘째, .htaccess 파일에 항목이 너무 많으면 Apache 서버 속도가 느려집니다. 그리고 셋째, 너무 많은 정보를 입력하다 보면 어딘가에서 실수를 할 확률이 높다. 따라서 가장 좋은 방법은 동적 리디렉션을 작성할 프로그래머를 고용하는 것입니다.
    아래 예제는 PHP로 작성되었지만 모든 언어로 실행될 수도 있습니다. 사이트에서 새로운 연결 시스템으로 전환했고 이전 ID로 끝나는 모든 파일이 나열되어야 한다고 가정합니다. 먼저, 리디렉션을 위한 이전 ID와 새 URL을 포함하는 테이블을 데이터베이스에 생성합니다. old_id INT new_url VARCHAR (255) 다음으로 이전 ID를 새 URL과 연결하는 코드를 작성합니다.
    그런 다음 .htaccess에 다음 줄을 추가합니다: RewriteRule ^/product-(.*)_(+).php /redirectold.php?productid=$2 그런 다음 301 리디렉션을 지원하는 PHP 파일 리디렉션old.php를 만듭니다.

    이제 이전 URL에 대한 모든 요청은 새로운 URL을 찾고 새 링크와 함께 301 응답을 반환하는 리디렉션.php를 호출합니다.

    시간에 따라 리디렉션

    시간에 민감한 콘텐츠와 같은 트릭의 경우 많은 웹마스터가 여전히 특수 페이지로 리디렉션되는 CGI 스크립트를 사용합니다. mod_rewrite를 통해 어떻게 이를 수행할 수 있나요?

    리디렉션 조건에는 TIME_xxx라는 변수가 많이 있습니다. 비교를 위한 특수 사전 편찬 샘플과 함께 STRING 및 =STRING을 사용하면 시간 종속 리디렉션을 수행할 수 있습니다. RewriteCond %(TIME_HOUR)%(TIME_MIN) >0700 RewriteCond %(TIME_HOUR)%(TIME_MIN)의 RewriteEngine<1900 RewriteRule ^foo\.html$ foo.day.html RewriteRule ^foo\.html$ foo.night.html

    07:00부터 19:00까지 foo.html URL을 요청하면 foo.day.html의 내용을 반환하고, 나머지 시간에는 foo.night.html의 내용을 반환합니다.

  12. 처음에는 모든 요청을 제거합니다. "WWW."
    RewriteEngine on # mod_rewrite RewriteCond %(HTTP_HOST) ^www\.(.*) RewriteRule ^/?(.*) http://%1/$1을 사용하겠다고 발표합니다.

    도메인 이름이 www로 시작하면 "http://%1/$1의 모든 것"이라는 규칙이 작동하는지 확인합니다. 여기서 %1은 www가 없는 도메인(조건에서 가져옴)이고 $1은 주소(규칙 자체에서 가져옴)입니다.

  13. 마지막에 모든 요청에서 index.php를 제거합니다. index.php가 없는 페이지로 리디렉션

    검색 엔진은 페이지 중복을 친절하게 받아들이지 않습니다. 이를 방지하려면 http://your_domain/ 및 http://your_domain/index.php와 같은 페이지를 삭제(결합)해야 합니다.

    RewriteCond %(THE_REQUEST) ^.*/index.php RewriteRule ^(.*)index.php$ http://%(HTTP_HOST)/$1

  14. 확장자 변경 .html~에 .php
    때로는 정적 웹사이트가 있지만 이를 작업하려면 일종의 PHP 스크립트가 필요한 경우가 있습니다. 이렇게 하려면 서버에 이 페이지를 PHP 파일로 처리하도록 지시해야 합니다. AddHandler application/x-httpd-php .html 이 기술은 다른 파일 확장자에도 사용할 수 있습니다: AddHandler application/x-httpd-php .xml AddHandler application/x-httpd-php .asp

특정 디렉터리에 대한 접근 거부

  1. 디렉터리의 모든 파일에 대해 모두: 모두에서 거부
  2. 특정 파일에: 모두를 거부하다
  3. 사용자 IP별: 명령 거부, 허용 거부 모든 허용 192.152.37.125에서 이 디렉토리에 대한 액세스는 IP 192.152.37.125를 가진 사용자에게만 허용됩니다.

    반대로 개별 IP 사용자의 사이트 액세스를 거부하려면 다음 줄을 작성합니다.

    순서 허용, 거부 모두 허용 192.152.37.125에서 거부 123.456.177에서 거부

  4. Options -Indexes 지시문은 인덱스 파일이 없는 경우 디렉터리의 내용을 표시하는 것을 금지합니다. 때로는 기본적으로 표시되는 디렉터리에 파일이 없는 경우 디렉터리의 파일 목록이 표시되지 않는지 확인해야 합니다. . 그런 다음 .htaccess에 다음 행을 추가할 수 있습니다. 옵션 -Indexes 이 경우 디렉토리의 파일 목록 대신 방문자에게 HTTP 오류 403 - 액세스 금지가 표시됩니다.
  5. 여러 유형의 확장자를 가진 파일에 대한 액세스 거부
  6. 모두를 거부하다

    확장자가 *.inc, *.conf 및 *.cfg인 파일에 대한 액세스는 금지됩니다. 기본적으로 지시어는 정규식에서 작동하지 않지만 지시어 옵션에 물결표 문자(~)를 넣어 활성화할 수 있습니다. 구문은 다음과 같습니다.

    [tilde] [space] [further_all_without_spaces] 이 액세스를 차단하려면 다음을 작성하십시오. RewriteRule ^.htaccess$ - [F] 이 규칙은 다음과 같이 변환됩니다.
    누군가 .htaccess 파일에 액세스하려고 하면 시스템에서는 "403의 HTTP 응답" 또는 "403 금지됨 - 이 서버의 /.htaccess에 액세스할 수 있는 권한이 없습니다."라는 오류 코드를 생성해야 합니다.

    이 정규 표현식의 ^.htaccess$ 구성은 다음을 의미합니다.
    ^ - 줄 시작 부분의 앵커
    $ - 라인 끝 앵커
    . - 정규식에서는 점 "."을 사용합니다. 메타 문자를 나타내며 실제 점을 계속 사용하려면 백슬래시로 이스케이프해야 합니다.

    파일 이름은 시작 앵커와 끝 앵커 사이에 정확하게 위치해야 합니다. 이렇게 하면 이 특정 파일 이름만 생성되고 다른 파일 이름은 오류 코드가 생성되지 않습니다.
    [에프]- 특별한 "금지" 플래그(금지).
    - 문자의 대소문자는 고려하지 마세요.
    - "또는 다음 조건"을 의미합니다.

인코딩 정의

서버가 파일을 "전송"하는 인코딩 결정

AddDefaultCharset windows-1251 옵션: KOI8-R, UTF-8, Windows-1251

다운로드한 파일의 인코딩 결정

CharsetSourceEnc 창-1251

.htaccess를 사용하여 디렉터리 비밀번호 설정

디렉토리의 비밀번호를 설정하려면 Apache 웹 서버에서 제공되는 기본 인증 시스템을 사용할 수 있습니다. 비밀번호로 액세스를 제한하려는 디렉토리에서 다음 지시문을 사용하여 .htaccess 파일을 만듭니다. AuthType 기본 AuthName "Some Name" AuthUserFile /www/some_login/www/htdocs/some_dir/.htpasswd 유효한 사용자 경로 필요 / www/some_login/ www/htdocs/some_dir/.htpasswd는 서버 디스크에 있는 비밀번호 파일의 전체 경로를 나타냅니다. 예를 들어, FTP를 통해 서버에 액세스할 때 이동하는 홈 디렉토리에 .htpasswd 파일(비밀번호 포함)을 배치하면 이 파일의 경로는 /www/some_login/www/htdocs/와 같습니다. some_dir/.htpasswd , 여기서 some_login은 로그인입니다. AuthUserFile 지시문에서 우리는 로그인/비밀번호가 있는 파일의 절대 경로를 지정합니다. 이 경로는 나중에 생성할 것입니다. .htaccess 파일을 텍스트 편집기를 사용하여 서버에서 직접 생성하지 않고 컴퓨터에서 생성하는 경우 .htaccess는 FTP를 통해 엄격하게 텍스트(ASCII) 모드로 전송되어야 한다는 점에 특히 주의하세요.

비밀번호 파일을 생성합니다. 비밀번호 파일에는 login:password와 같은 행이 포함되어야 합니다. 비밀번호는 MD5 알고리즘을 사용하여 암호화되어야 합니다. 이러한 파일을 생성하는 한 가지 방법은 Apache에 포함된 프로그램인 htpasswd를 사용하는 것입니다(우리 서버에서는 /usr/local/apache/bin 디렉토리, 전체 경로 - /usr/local/apache/bin/htpasswd에 있음). .

서버에서 직접 유닉스 셸에서 비밀번호 파일을 생성하는 방법을 살펴보겠습니다. 셸로 이동하여 다음 명령을 실행해 보겠습니다.

Htpasswd -mbc .htpasswd user1 7B1safkir - 새 파일 .htpasswd를 생성합니다. 여기에 명령줄에 지정된 비밀번호를 사용하여 user1 사용자에 대한 항목을 추가합니다. htpasswd .htpasswd user2 - 기존 .htpasswd 파일에 user2를 추가하고 프로그램의 해당 요청에 대한 응답으로 비밀번호를 수동으로 입력합니다.

모든 로그인이 생성된 후 파일을 서버에 업로드해야 합니다.

페이지에 비밀번호를 설정하는 다른 방법 정보

자신만의 오류 페이지 설정

다음과 같이 자신만의 오류 페이지를 설정할 수 있습니다. ErrorDocument 404 http://www.site.ru/404.php IE는 512바이트보다 작은 페이지를 무시합니다.

디렉터리 및 하위 디렉터리 인덱싱

검색 엔진이 디렉터리와 하위 디렉터리를 색인화하지 않으려면 다음 줄을 작성해야 합니다. 예: DirectoryIndex index.php 이 지시어는 파일 이름을 지정하지 않고 디렉터리에 액세스할 때 호출될 파일을 지정합니다.

여러 인덱스 페이지를 지정할 수 있습니다. 디렉토리를 쿼리하면 DirectoryIndex 지시어에 나열된 순서대로 검색됩니다. index.html 파일을 찾을 수 없으면 index.php 파일을 검색합니다.

디렉토리색인 index.html index.php index.shtml

개인적으로 저는 빈 디렉토리에서 사이트의 메인 페이지나 다른 적절한 페이지로 리디렉션하는 것을 선호합니다. 예를 들어, www.site.ru/pic/ 디렉터리는 www.site.ru로 리디렉션될 수 있습니다.

이미지 다운로드 방지

웹마스터가 귀하의 사이트에서 사진과 함께 콘텐츠를 노골적으로 복사하고 사진이 귀하의 서버에서 로드되는 경우가 종종 있습니다. 이로 인해 불필요한 트래픽이 발생하여 종종 여러 가지 문제가 발생합니다. 그러한 웹마스터로부터 자신을 보호하고 검색 로봇이 이미지를 색인화하는 것을 방지하는 방법은 무엇입니까? 간단합니다. RewriteCond %(HTTP_REFERER) 의 RewriteEngine입니다. RewriteCond %(HTTP_REFERER) !^http://([^.]+\.)?site\. RewriteCond %(HTTP_REFERER) !google\. RewriteCond %(HTTP_REFERER) !search\?q=cache RewriteCond %(HTTP_REFERER) !msn\. RewriteCond %(HTTP_REFERER) !yahoo\. RewriteCond %(REQUEST_URI) !^/hotlinker\.gif$ RewriteRule \.(gif|jpg|png)$ /hotlinker.gif hotlinker.gif는 실제 이미지 대신 표시될 이미지입니다. 이 이미지에는 귀하의 로고와 웹사이트 링크를 표시하는 것이 좋습니다.

승인되지 않은 사이트의 사진에 대한 접근을 차단하는 또 다른 옵션:

SetEnvIfNoCase 리퍼러 "^$" local_ref=1 SetEnvIfNoCase 리퍼러 "^http://(www\.)?htmlweb\.ru" local_ref=1 SetEnvIfNoCase 리퍼러 "^http://(www\.)?images\.yandex\ .ru" local_ref=1 SetEnvIfNoCase 참조자 "^http://(www\.)?hghltd\.yandex\.com" local_ref=1 env=local_ref에서 주문 허용, 거부 허용

검색 엔진과 다양한 유형의 크롤러는 귀하의 웹사이트에 엄청난 트래픽을 생성합니다. 아래 코드 블록을 사용하면 사이트에 대한 봇의 액세스를 거부할 수 있습니다.

RewriteCond %(HTTP_USER_AGENT) (Googlebot|Slurp|spider|Twiceler|heritrix| Combine|appie|boitho|e-SocietyRobot|Exabot|Nutch|OmniExplorer| MJ12bot|ZyBorg/1|Ask\ Jeeves|AskJeeves|ActiveTouristBot| JemmaTheTourist| agadine3| JoinBot|Clustered-Search-Bot|MSIECrawler|freefind|galaxy|genieknows|INGRID|grub-client| MojeekBot|NaverBot|NetNose-Crawler|OnetSzukaj|PrassoSunner|T-H-U-N-D-E-R-S-T-O-N-E|GeorgeTheTouristBot| VoilaBot|Vagabondo|fan tomBro wser|스텔스브라우저 |cloakBrowser| \ Browser|Girafabot|Indy\ Library|Intelliseek|Zealbot| Windows\ 95|^Mozilla/4\.05\ \$|^Mozilla/4\.0$) RewriteRule ^(.*)$ - [ F] # RewriteCond %(HTTP_USER_AGENT) ^Mozilla.* RewriteCond %(HTTP_USER_AGENT) ^Opera.* RewriteCond %(HTTP_USER_AGENT) ^Firefox.* RewriteCond %(HTTP_USER_AGENT) ^Netscape.* RewriteRule ^(.*)$ - [L] RewriteRule ^(. *)$ - [F]

robots.txt 파일에 대한 호출 추적

검색 엔진 방문에 대한 자세한 정보를 얻으려면 robots.txt 파일 액세스에 대한 자세한 정보를 갖고 있는 것이 유용합니다. 이를 구성하려면 다음 항목이 ".htaccess"에 있어야 합니다. RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^ robots.txt$ / robots.php?%(REQUEST_URI) 이제 "robots.txt" 파일을 요청할 때 RewriteRule은 방문자(로봇)를 요청을 처리하는 robots.php 스크립트로 리디렉션합니다. 또한 변수는 필요에 따라 처리되는 스크립트로 전달됩니다. "REQUEST_URI"는 요청된 파일의 이름을 지정합니다. 이 예에서는 "robots.txt"입니다. 스크립트는 "robots.txt"의 내용을 읽고 이를 웹 브라우저나 검색 엔진 로봇으로 보냅니다. 이렇게 하면 방문자 조회수를 계산하고 로그 파일을 유지할 수 있습니다.

PHPSESSID

URL에 PHPSESSID 추가를 비활성화하려면 index.php 시작 부분에 다음을 삽입하세요.

Ini_set("session.use_trans_sid", 0);

또는 .htaccess로 작성하세요.

Php_flag session.use_trans_sid 꺼짐

이 모든 것이 복잡해 보인다면 htaccess를 사용하여 동적 URL을 정적 URL로 변환하는 기성 서비스를 사용하세요.

캐싱 지시어

액세스 시간별 모든 파일 유형 캐싱 ExpiresDefault 시 ExpiresActive "액세스 + 600초" 수정 시간별 모든 파일 유형 캐싱 ExpiresDefault 시 ExpiresActive "수정 + 600초" 특정 파일 유형 캐싱 ExpiresByType text/css "수정 + 600초" ExpiresByType image/jpeg "수정 + 600초" ExpiresByType image/gif "수정 + 600초" ExpiresByType image/x-ico "수정 + 600초" ExpiresByType image/png "수정 + 600초"

Apache 서버를 사용하여 캐싱 비활성화

Apache 서버 구성 파일을 엽니다. httpd.conf다음 줄의 주석 처리를 제거하십시오.

LoadModule 만료_모듈 모듈/mod_expires.so LoadModule headers_module 모듈/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

.htaccess에 다음을 입력합니다.

# 이 폴더에서 캐싱을 비활성화합니다. # 모듈을 활성화해야 합니다. # mod_headers.c 및 mod_expires.c # # Cache-Control 헤더 헤더 추가 Cache-Control "no-store, no-cache, must-revalidate"# 헤더 만료 ExpiresActive On ExpiresDefault "지금"

필요한 헤더는 자동으로 전송되며 PHP로 특별히 작성할 필요가 없습니다. 캐시가 이미 꺼져 있습니다!

캐시 제어 캐싱 http 헤더에 대한 설명

.htaccess 파일을 사용하여 캐싱

# 이 폴더에 캐싱을 허용합니다. # 모듈이 # mod_headers.c 및 mod_expires.c 활성화되어야 합니다. # ExpiresActive on #ExpiresDefault "액세스 + 1시간" #ExpiresDefault "액세스 + 10년" ExpiresDefault "액세스 + 1개월" ExpiresByType text/cache-manifest "액세스 + 0초" ExpiresByType text/html "액세스 + 0초" ExpiresByType text/ xml "액세스 + 0초" ExpiresByType application/xml "액세스 + 0초" ExpiresByType application/json "액세스 + 0초" ExpiresByType application/rss+xml "액세스 + 1개월" ExpiresByType image/x-icon "액세스 + 1주 " ExpiresByType image/gif "액세스 + 1년" ExpiresByType image/png "액세스 + 1년" ExpiresByType image/jpg "액세스 + 1년" ExpiresByType image/jpeg "액세스 + 1년" ExpiresByType video/ogg "액세스 + 1년 " ExpiresByType audio/ogg "액세스 + 1년" ExpiresByType audio/mp3 "액세스 + 1년" ExpiresByType video/mp4 "액세스 + 1년" ExpiresByType video/webm "액세스 + 1년" ExpiresByType text/x-comComponent "액세스 플러스 1개월" ExpiresByType 글꼴/truetype "액세스 + 1년" ExpiresByType 글꼴/opentype "액세스 + 1년" ExpiresByType application/x-font-woff "액세스 + 1년" ExpiresByType image/svg+xml "액세스 + 1개월" ExpiresByType application/vnd.ms-fontobject "액세스 + 1년" ExpiresByType text/css "액세스 + 2개월" ExpiresByType application/javascript "액세스 + 2개월" ExpiresByType text/javascript "액세스 + 2개월" 헤더 추가 Cache-Control "public"

.htaccess 파일을 사용하여 자바스크립트 파일 캐싱

ExpiresDefault "액세스 + 3일"

캐싱할 때 주의하세요. 왜냐하면... 파일이 변경되면 사용자는 3일 후에만 새 버전을 받을 수 있습니다!

HTML 페이지가 PHP 코드를 처리하도록 강제하는 방법은 무엇입니까?

.htaccess 파일에 다음 줄을 작성합니다: RemoveHandler .php .htm .html AddHandler application/x-httpd-php .php .htm .html

하나의 가상 호스팅에서 여러 웹사이트를 호스팅하는 방법은 무엇입니까?

요금제에 따라 할당된 도메인 수에도 불구하고 하나의 공유 호스팅에서 두 개 이상의 웹사이트를 호스팅하려면 ".htaccess" 파일에 다음 줄을 작성해야 합니다.

RewriteEngine On RewriteRule ^newdirectory/ - [L] RewriteCond %(HTTP_HOST) (www.)?newdomain.ru RewriteRule (.*) newdirectory/$1 [L]

어디:
newdirectory/ - 두 번째 사이트가 위치할 폴더
newdomain.ru - 리디렉션할 도메인

이 경우 단일 이메일 계정을 갖게 된다는 점에 유의하세요. 저것들. 상자가 있다면 [이메일 보호됨], 도메인 newdomain.ru를 상자에 연결한 후 [이메일 보호됨]두 번째 이름이 나타납니다 - [이메일 보호됨]. 그리고 새 사서함(예: info)을 만들면 자동으로 두 가지 이름이 할당됩니다. [이메일 보호됨]그리고 [이메일 보호됨].

둘 이상의 디렉토리에서 페이지 검색

때로는 웹 서버가 둘 이상의 디렉토리에서 페이지를 찾도록 허용해야 하는 경우도 있습니다.

# 먼저 RewriteEngine을 지정된 위치에서 찾으려고 합니다/... # ...찾으면 검색을 종료합니다: RewriteCond /your/docroot/dir1/%(REQUEST_FILENAME) -f RewriteRule ^(.+) /your/ docroot/dir1/$1 [L] # 두 번째로, pub/... # ...찾으면 검색을 완료합니다: RewriteCond /your/docroot/dir2/%(REQUEST_FILENAME) - f RewriteRule ^( .+) /your/docroot/dir2/$1 [L] # 그렇지 않으면 다른 지시어에 대해 계속 RewriteRule ^(.+) -

사용자 가상 호스트

사용자 페이지에 www.subdomain.domain.ru 주소를 제공하려는 경우 다음 규칙 세트를 사용하여 http://www.subdomain.domain.ru/path를 내부 경로 /home/subdomain/path로 변환할 수 있습니다. :

RewriteCond %(HTTP_HOST) ^www\.[^.]+\.ru$ RewriteEngine RewriteRule ^(.+) %(HTTP_HOST)$1 [C] RewriteRule ^www\.([^.]+)\.ru( .*) /집/$1$2

서버에 업로드하면 파일이 손상됨

양식(enctype="multipart/form-data" 지정)을 통해 파일을 전송할 때 바이너리 데이터가 손상된 경우 /cgi-bin/.htaccess에 다음 지시어를 추가하세요: CharsetRecodeMultipartForms Off.

SWF 파일을 로드하는 중에 오류가 발생했습니다.
키워드가 포함된 페이지에 액세스할 때 오류 발생
$_REQUEST를 입력하세요.

설치된 모듈로 인해 이런 일이 발생할 수 있습니다. 아파치에서. 기본적으로 쿼리에서 SQL 인수 및 기타 잠재적으로 위험한 명령이 포함된 행을 차단합니다.

가능한 오류 메시지:

금지됨

이 서버의 /adm/index.php에 액세스할 수 있는 권한이 없습니다. 또한 ErrorDocument를 사용하여 요청을 처리하는 동안 404 Not Found 오류가 발생했습니다.

요청이 안전하지 않아 거부되었습니다.

.htaccess에 추가 SecFilterEngine 끄기 SecFilterScanPOST 끄기메시지:

"POST /wp-admin/async-upload.php HTTP/1.1" 406,354 "-" "충격파 플래시"

서버에 파일을 업로드하는 경우에만 보호를 제거할 수 있습니다. SecFilterEngine 끄기 SecFilterScanPOST 끄기

전체 사이트에서 보호를 제거하지 않고 필요한 폴더에서만 보호를 제거하는 것이 가장 좋습니다.

서버 변수

이는 다음 형식의 변수입니다. %(NAME_OF_VARIABLE)

어디 NAME_OF_VARIABLE다음 목록에서 가져온 문자열일 수 있습니다.

이러한 변수는 유사한 이름의 HTTP MIME 헤더, Apache 서버 변수 또는 Unix 시스템 struct tm 필드와 정확히 일치합니다. mod_rewrite에 특별한 기능은 다음과 같습니다.

IS_SUBREQ- 쿼리가 현재 하위 쿼리로 실행되고 있으면 "true" 텍스트를 포함하고, 그렇지 않으면 "false" 텍스트를 포함합니다. 자체 작업을 수행하기 위해 추가 파일이나 URI를 처리해야 하는 모듈에서 하위 쿼리를 생성할 수 있습니다.

API_VERSION- 현재 서버 빌드에 있는 Apache 모듈 API(서버와 모듈 사이의 내부 인터페이스)의 버전으로, include/ap_mmn.h에 정의되어 있습니다. 모듈의 API 버전은 사용된 Apache 버전(예: Apache 버전 1.3.14의 경우 19990320:10)에 해당하지만 이는 주로 모듈 작성자의 관심사입니다.

THE_REQUEST- 브라우저에서 서버로 보낸 전체 HTTP 요청 문자열(예: "GET /index.html HTTP/1.1"). 브라우저에서 보낸 추가 헤더는 포함되지 않습니다.

REQUEST_URI- HTTP 요청 라인에서 요청된 리소스입니다.

REQUEST_FILENAME- 이 요청에 해당하는 파일 또는 스크립트에 대한 서버 파일 시스템의 전체 경로입니다.

노트:

  1. SCRIPT_FILENAME 및 REQUEST_FILENAME 변수에는 동일한 값, 즉 Apache 서버의 내부 request_rec 구조의 filename 필드 값이 포함됩니다. 첫 번째 이름은 단순히 CGI 변수의 잘 알려진 이름이고, 두 번째 이름은 REQUEST_URI(request_rec 구조의 uri 필드 값 포함)의 영구 복사본입니다.
  2. 특별한 형식이 있습니다: %(ENV:variable) 여기서 변하기 쉬운모든 환경 변수가 될 수 있습니다. 이는 Apache의 내부 구조에서 찾고 (없을 경우) Apache 서버 프로세스에서 getenv()를 호출하여 찾습니다.
  3. 특별한 형식이 있습니다: %(HTTP:header) 여기서 제목모든 HTTP MIME 헤더 이름이 될 수 있습니다. 이는 HTTP 요청에서 검색됩니다. 예: %(HTTP:Proxy-Connection) HTTP 헤더 값 " Proxy-Connection: ".
  4. 최종 값을 결정하기 위해 내부(URL 기반) 하위 쿼리에 의해 생성되는 %(LA-U:variable) 예측 쿼리의 특수 형식이 있습니다. 변하기 쉬운. 나중에 API의 일부 단계에서 실제로 정의되어 해당 단계에서 사용할 수 없는 변환에 변수를 사용하려는 경우 이를 사용합니다. 예를 들어 서버 컨텍스트(httpd.conf 파일)에서 REMOTE_USER 변수에 따라 변환하려는 경우 %(LA-U:REMOTE_USER)를 사용해야 합니다. 이 변수는 인증 단계에서 설정되기 때문입니다. ~ 후에 mod_rewrite가 작동하는 URL 변환 단계입니다. 반면에 mod_rewrite는 API의 Fixup 단계를 통해 디렉터리 컨텍스트(.htaccess 파일)에서 작동하고 승인 단계가 이 단계 이전에 오기 때문에 간단히 %(REMOTE_USER)를 사용할 수 있습니다.
  5. 최종 값을 결정하기 위해 내부(파일 이름 기반) 하위 쿼리를 생성하는 특별한 형식인 %(LA-F:variable)이 있습니다. 변하기 쉬운. 이는 기본적으로 위의 LA-U 형식과 동일합니다.

중복되지 않은 홈페이지

일반적으로 홈 페이지 코드는 실제로 index.html 또는 index.php 파일에 있지만 사이트는 yoursite.ru, yoursite.ru/index.html, www.yoursite.ru 및 www 등의 요청에 의해 열려야 합니다. .yoursite.ru/index.html. 하지만 검색 엔진의 경우 이는 4개의 서로 다른 URL입니다! .htaccess를 올바르게 구성하지 않으면 검색 엔진이 해당 색인에 4개의 동일한 페이지를 추가합니다. 이는 품질이 낮은 사이트의 표시입니다. .htaccess에서 다음 코드를 사용하면 이 문제를 피할 수 있습니다.

옵션 +FollowSymLinks RewriteEngine on RewriteCond %(HTTP_HOST) ^yoursite.ru RewriteRule (.*) http://www.yoursite.ru/$1 RewriteCond %(THE_REQUEST) ^(3,9)\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://www.yoursite.ru/

모든 중복 페이지는 리디렉션 코드와 함께 기본 페이지(http://www.yoursite.ru/)로 병합됩니다.

URL 끝에 슬래시가 없는 중복 페이지

www.yoursite.ru/about 및 www.yoursite.ru/about/ 페이지를 다르게 색인화하는 상황을 방지하기 위해 다음 코드를 삽입합니다.

슬래시가 없는 페이지는 "슬래시" 페이지로 리디렉션됩니다.

RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_URI) !(.*)/$ RewriteRule ^(.*)$ /$1/

파일을 열지 않고 저장(다운로드)

많은 사람들이 .rar 확장자를 가진 아카이브를 다운로드하려고 할 때 브라우저가 이를 뒤죽박죽된 문자로 구성된 일반 텍스트로 여는 것을 보았습니다. 이는 브라우저에서 열어서는 안되는 파일 형식을 강제로 저장하도록 사이트 서버가 구성되지 않았음을 의미합니다.

AddType 애플리케이션/옥텟-스트림 .rar .doc .mov .avi .pdf .xls .mp4

보낸 페이지 압축

SetOutputFilter DEFLATE 헤더 설정 해제 ETag 파일ETag 없음

후행 슬래시 강제 설정

다음 코드는 항상 사이트 URL에 슬래시를 추가하므로 사이트 SEO에 좋습니다.

RewriteCond %(REQUEST_URI) /+[^\.]+$ RewriteRule ^(.+[^/])$ %(REQUEST_URI)/

FireFox의 도메인 간 글꼴 사용

내장 글꼴을 사용할 때 Firefox는 외부 사이트에서 해당 글꼴을 가져오는 것을 허용하지 않습니다. .htaccess 파일에 대한 다음 코드를 사용하면 이 제한을 우회할 수 있습니다.

#yourdomain.com을 블로그 주소 헤더 세트 Access-Control-Allow-Origin "http://yourdomain.com"으로 바꿉니다.

JavaScript 파일에서 PHP 실행

JavaScript 코드를 개발할 때 데이터베이스에서 데이터를 검색하는 등의 경우 .js 파일에서 PHP를 사용해야 하는 경우가 있습니다.

AddType 애플리케이션/x-httpd-php .js AddHandler x-httpd-php5 .js SetHandler 애플리케이션/x-httpd-php

robots.txt, sitemap.xml 등의 파일을 확장합니다. 도메인 폴더에

# 사이트 루트의 도메인 폴더에 요청된 파일이 있는 경우 해당 파일을 그곳으로 리디렉션합니다. RewriteCond %(DOCUMENT_ROOT)/domain/%(HTTP_HOST)/root%(REQUEST_URI) -f RewriteRule ^(.*)$ /도메인/%(HTTP_HOST)/루트/$1 [L]

.htaccess를 통해 사용자 에이전트 차단

일부 유형의 사용자 에이전트가 불필요한 요청으로 서버를 로드하는 문제에 직면한 경우 .htaccess에 다음 줄을 추가하여 문제를 제거할 수 있습니다.

SetEnvIfNoCase 사용자 에이전트 "^Black Hole" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Titan" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebStripper" bad_bot SetEnvIfNoCase 사용자 에이전트 "^NetMechanic" bad_bot SetEnvIfNoCase 사용자 에이전트 "^CherryPicker" bad_bot SetEnvIfNoCase User-Agent "^EmailCollector" bad_bot SetEnvIfNoCase 사용자 에이전트 "^EmailSiphon" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebBandit" bad_bot SetEnvIfNoCase 사용자 에이전트 "^EmailWolf" bad_bot SetEnvIfNoCase 사용자 에이전트 "^ExtractorPro" bad_bot SetEnvIfNoCase 사용자 에이전트 "^CopyRightCheck" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Crescent" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Wget" bad_bot SetEnvIfNoCase 사용자 에이전트 "^SiteSnagger" bad_bot SetEnvIfNoCase 사용자 에이전트 "^ProWebWalker" bad_bot SetEnvIfNoCase 사용자 에이전트 "^CheeseBot" bad_bot SetEnvIfNoCase User-Agent " ^Teleport" bad_bot SetEnvIfNoCase 사용자 에이전트 "^TeleportPro" bad_bot SetEnvIfNoCase 사용자 에이전트 "^MIIxpc" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Telesoft" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Website Quester" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebZip" bad_bot SetEnvIfNoCase 사용자 에이전트 "^moget/2.1" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebZip/4.0" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebSauger" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebCopier" bad_bot SetEnvIfNoCase 사용자 에이전트 "^NetAnts" bad_bot SetEnvIfNoCase User-Agent "^Mister PiX" bad_bot SetEnvIfNoCase User-Agent "^WebAuto" bad_bot SetEnvIfNoCase User-Agent "^TheNomad" bad_bot SetEnvIfNoCase User-Agent "^WWW-Collector-E" bad_bot SetEnvIfNoCase User-Agent "^RMA" bad_bot SetEnvIfNoCase 사용자 에이전트 "^libWeb/clsHTTP" bad_bot SetEnvIfNoCase 사용자 에이전트 "^asterias" bad_bot SetEnvIfNoCase 사용자 에이전트 "^httplib" bad_bot SetEnvIfNoCase 사용자 에이전트 "^turingos" bad_bot SetEnvIfNoCase 사용자 에이전트 "^spanner" bad_bot SetEnvIfNoCase 사용자 에이전트 "^InfoNaviRobot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Harvest/1.5" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Bullseye/1.0" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Mozilla/4.0(호환; 황소의 눈; Windows 95)" bad_bot SetEnvIfNoCase User-Agent "^Crescent Internet ToolPak HTTP OLE Control v.1.0" bad_bot SetEnvIfNoCase User-Agent "^CherryPickerSE/1.0" bad_bot SetEnvIfNoCase User-Agent "^CherryPicker /1.0" bad_bot SetEnvIfNoCase User-Agent "^ WebBandit/3.50" bad_bot SetEnvIfNoCase 사용자 에이전트 "^NICErsPRO" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Microsoft URL Control - 5.01.4511" bad_bot SetEnvIfNoCase 사용자 에이전트 "^DittoSpyder" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Foobot" bad_bot SetEnvIfNoCase 사용자- 에이전트 "^WebmasterWorldForumBot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^SpankBot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^BotALot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^lwp-trivial/1. 34" bad_bot SetEnvIfNoCase 사용자 에이전트 "^lwp-trivial" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Wget/1.6" bad_bot SetEnvIfNoCase 사용자 에이전트 "^BunnySlippers" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Microsoft URL 제어 - 6.00.8169" bad_bot SetEnvIfNoCase 사용자 에이전트 "^URLy 경고" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Wget/1.5.3" bad_bot SetEnvIfNoCase 사용자 에이전트 "^LinkWalker" bad_bot SetEnvIfNoCase 사용자 에이전트 "^cosmos" bad_bot SetEnvIfNoCase 사용자 에이전트 "^moget" bad_bot SetEnvIfNoCase 사용자 에이전트 "^hloader" bad_bot SetEnvIfNoCase 사용자 에이전트 "^humanlinks" bad_bot SetEnvIfNoCase 사용자 에이전트 "^LinkextractorPro" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Offline Explorer" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Mata Hari" bad_bot SetEnvIfNoCase 사용자 에이전트 "^LexiBot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^웹 이미지 수집기" bad_bot SetEnvIfNoCase 사용자 에이전트 "^The Intraformant" bad_bot SetEnvIfNoCase 사용자 에이전트 "^True_Robot/1.0" bad_bot SetEnvIfNoCase 사용자 에이전트 "^True_Robot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^BlowFish/1.0" bad_bot SetEnvIfNoCase 사용자 에이전트 "^JennyBot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^MIIxpc/4.2" bad_bot SetEnvIfNoCase 사용자 에이전트 "^BuiltBotTough" bad_bot SetEnvIfNoCase 사용자 에이전트 "^ProPowerBot/2.14" bad_bot SetEnvIfNoCase User- 에이전트 "^BackDoorBot/1.0" bad_bot SetEnvIfNoCase 사용자 에이전트 "^toCrawl/UrlDispatcher" bad_bot SetEnvIfNoCase 사용자 에이전트 "^WebEnhancer" bad_bot SetEnvIfNoCase 사용자 에이전트 "^TightTwatBot" bad_bot SetEnvIfNoCase 사용자 에이전트 "^suzuran" bad_bot SetEnvIfNoCase User-Agent "^VCI WebViewer VCI WebViewer Win32" bad_bot SetEnvIfNoCase 사용자 에이전트 "^VCI" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Szukacz/1.4" bad_bot SetEnvIfNoCase 사용자 에이전트 "^QueryN Metasearch" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Openfind 데이터 수집" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Openfind" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Xenu"s Link Sleuth 1.1c" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Xenu"s" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Zeus" bad_bot SetEnvIfNoCase User-Agent "^ RepoMonkey Bait & Tackle/v1.01" bad_bot SetEnvIfNoCase 사용자 에이전트 "^RepoMonkey" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Zeus 32297 Webster Pro V2.9 Win32" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Webster Pro" bad_bot SetEnvIfNoCase 사용자 에이전트 " ^EroCrawler" bad_bot SetEnvIfNoCase 사용자 에이전트 "^LinkScan/8.1a Unix" bad_bot SetEnvIfNoCase 사용자 에이전트 "^키워드 밀도/0.9" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Kenjin Spider" bad_bot SetEnvIfNoCase 사용자 에이전트 "^Cegbfeieh" bad_bot 주문 허용, 거부 모두에서 허용 env=bad_bot의 거부

언어별 전달

RewriteCond %(HTTP:Accept-Language)의 RewriteEngine (ru) RewriteRule .* WHERE [L]

다른 사이트의 링크를 통한 이미지 다운로드 방지

REFERER가 없는 전환 포함, 즉 주소가 브라우저 라인에 표시될 때.

RewriteCond %(HTTP_REFERER)의 RewriteEngine !^$ RewriteCond %(HTTP_REFERER) !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ WHERE_SEND

RewriteCond %(HTTP_REFERER)의 RewriteEngine !^http(s)?://(www\.)?yourdomain.com RewriteRule \.(jpg|jpeg|png|gif)$ WHERE_TO_SEND

특정 추천인이 있는 사용자 차단

사용자가 특정 사이트에서 귀하의 사이트로 이동하는 것을 원하지 않는 경우 이를 차단할 수 있습니다.

RewriteCond %(HTTP_REFERER) banurl1.com RewriteCond %(HTTP_REFERER) banurl2.com RewriteRule의 RewriteEngine .* - [F]

bannedurl1.com 및bannedurl2.com은 금지된 사이트의 예입니다.

PHP 업로드 파일 크기, 최대 요청 크기 및 최대 스크립트 실행 시간 제한

다운로드 파일 크기:

Php_value upload_max_filesize 15M

PHP 업로드의 최대 요청 크기:

Php_value post_max_size 10M

스크립트 실행 시간:

Php_value max_execution_time 240

스크립트가 입력된 데이터를 구문 분석하는 데 걸리는 시간:

PHP_값 max_input_time 180

IE의 출력 모드 지정

X-UA 호환 헤더 설정:

헤더 세트 X-UA-Compatible "IE=Edge"

설정은 다양함: Accept-Encoding

검색 엔진 최적화 및 페이지 로드 시간 단축을 위해 Google은 Vary: Accept-Encoding 헤더 설정을 권장합니다.

HTTP/1.1 Vary 응답 헤더를 사용하면 서버는 Vary에 지정된 헤더가 요청 헤더와 일치하는지 확인하지 않고 캐시된 리소스를 사용할 수 있음을 나타낼 수 있습니다. 값: Accept-Encoding, 호스트, User-Agent, Accept-Language.

헤더 추가는 다양함: Accept-Encoding

모든 도메인에 대한 공통 이미지 파일(전역 별칭)

별칭/javascripts /usr/share/javascript/ 옵션 FollowSymLinks MultiViews예를 들어 /usr/share/javascript/ 디렉토리에 icon.png와 같은 공통 파일을 배치하고 /etc/javascript-common/javascript-common.conf 파일에 다음 줄을 추가합니다. Alias ​​​​/apple-touch-icon -precomposed.png /usr/share/javascript/icon.png

.doc를 다운로드할 때 .docx 파일이 브라우저에서 이해할 수 없는 인코딩으로 열립니다.

이해할 수 없는 인코딩을 사용하여 브라우저에서 .doc, .docx 파일을 열고 파일을 저장하고 마우스 왼쪽 버튼을 클릭해도 열리지 않도록 하려면 .htaccess로 작성해야 합니다.

AddType 애플리케이션/강제 다운로드 문서 AddType 애플리케이션/강제 다운로드 docx AddType 애플리케이션/강제 다운로드 xls AddType 애플리케이션/강제 다운로드 xlsx

보안 https 연결로 리디렉션

https를 사용하고 있고 모든 사용자를 https로 리디렉션하려는 경우 다음 코드가 도움이 될 것입니다.

RewriteEngine On RewriteCond %(HTTPS) !on RewriteRule (.*) https://%(HTTP_HOST)%(REQUEST_URI)

htaccess를 사용하여 쿠키가 설정된 경우 액세스

사이트 로그인이 admin이고 로그인이라는 이름의 쿠키에 설정되어 있으면 낯선 사람이 모든 디렉터리에 액세스하는 것을 쉽게 차단할 수 있습니다. 이렇게 하려면 이 디렉터리(폴더)에 다음 내용으로 .htaccess 파일을 만듭니다.

RewriteEngine On RewriteCond %(HTTP_COOKIE) !login=admin RewriteRule .* http://%(HTTP_HOST)/

동일한 원칙을 사용하여 관리자를 제외한 모든 사람의 예방 유지 관리를 위해 사이트를 닫을 수 있습니다.

"If-Modified-Since" 및 "If-None-Match" 헤더에 액세스하여 http 304 응답 구현

PHP가 Apache 모듈로 설치되지 않은 경우 "If-Modified-Since" 및 "If-None-Match" 헤더에 액세스하려면 다음 .htaccess 파일을 웹 사이트의 루트 디렉터리에 배치해야 합니다.

RewriteRule .*의 RewriteEngine - RewriteRule .* -

그 후에는 필요한 헤더를 $_SERVER["HTTP_IF_MODIFIED_SINCE"] 및 $_SERVER["HTTP_IF_NONE_MATCH"]로 사용할 수 있습니다.

"If-Modified-Since" 및 "If-None-Match" 헤더는 이전 요청에서 웹 서버의 응답으로 "Last-Modified" 헤더를 수신하지 않은 경우 브라우저에서 전송되지 않습니다. 페이지. 또한 웹 애플리케이션에서 기본 설정으로 세션을 사용하는 경우 지정된 헤더도 브라우저에서 전송되지 않습니다. 이러한 브라우저 동작을 방지하려면 세션을 시작하기 전에 "private_no_expire" 매개변수를 인수로 전달하여 session_cache_limiter 함수를 실행해야 합니다.

Session_cache_limiter("private_no_expire"); 세션_시작();

또한 해당 주제에 대한 추가 정보를 찾을 수 있습니다.

www.egoroff.spb.ru - 리디렉션의 예
htaccess.net.ru - htaccess에 대한 추가 정보.

.htaccess 파일을 사용하면 서버 구성 파일을 변경하지 않고도 웹사이트 구성을 설정할 수 있습니다. 파일 이름 시작 부분에 점이 있으면 해당 파일이 숨겨져 있음을 의미합니다.

.htaccess 파일은 텍스트 편집기에서 생성한 다음 ftp 클라이언트를 사용하여 사이트에 업로드할 수 있습니다.

메모: .htaccess 파일 이름에는 추가 단어나 확장자가 포함되어 있지 않습니다.

또한 이러한 파일의 위치도 매우 중요합니다. 이 파일의 구성은 파일 자체가 있는 디렉터리의 전체 내용과 모든 하위 디렉터리에 영향을 미칩니다.

파일 기능.htaccess

.htaccess 페이지는 매우 유용하고 사이트를 크게 개선할 수 있지만 사용할 때 염두에 두어야 할 두 가지 사항이 있습니다.

첫째, 속도다.. .htaccess 페이지로 인해 서버 속도가 약간 느려질 수 있습니다. 대부분의 경우 거의 눈에 띄지 않습니다. 이는 페이지 레이아웃 때문입니다. 언급한 대로 .htaccess 파일은 해당 디렉터리 내의 페이지와 하위 디렉터리에 영향을 미칩니다. 페이지가 로드될 때마다 서버는 최상위 디렉토리 또는 .htaccess 파일에 도달할 때까지 해당 디렉토리와 그 위의 각 디렉토리를 확인합니다. 이 프로세스는 AllowOverride 설정이 .htaccess 파일의 사용을 허용하는 한 해당 파일이 시스템에 존재하는지 여부에 관계없이 계속됩니다.

둘째, 안전이다. .htaccess 파일은 일반 Apache 구성 파일보다 액세스하기가 훨씬 쉽고, 변경 사항은 서버를 재부팅할 필요 없이 즉시 활성화됩니다. 따라서 .htaccess 파일을 변경할 수 있는 권한이 있는 사용자는 서버 자체에 심각한 영향을 미칠 수 있습니다. .htaccess에 추가된 모든 지시문은 Apache 구성에 직접 추가된 지시문과 동일한 효과를 갖습니다.

파일을 포함하는 방법.htaccess?

서버 설정에 액세스하면 Apache 구성을 편집하여 .htaccess 파일이 표준 사이트 구성을 재정의하도록 허용할 수 있습니다. 기본 apache2 호스트 구성 파일을 엽니다.

메모: 이 단계에서는 sudo 권한이 필요합니다.

sudo nano /etc/apache2/sites-available/default

파일을 연 상태에서 다음 섹션을 찾아 AllowOverride 지시문의 값을 None에서 All로 변경합니다. 섹션은 다음과 같아야 합니다.


옵션 색인 FollowSymLinks MultiViews
모두 무시 허용
주문 허용, 거부
모두에게 허용하다

파일을 저장하고 닫은 후 아파치를 다시 시작하십시오.

sudo 서비스 apache2 다시 시작

창조파일.htaccess

이미 언급했듯이 .htaccess 파일은 텍스트 편집기를 사용하여 생성한 다음 ftp 클라이언트를 통해 사이트에 업로드할 수 있습니다(.htaccess 파일 이름에는 추가 단어나 확장자가 포함되어서는 안 됩니다).

또는 터미널을 사용하여 이러한 파일을 만들 수 있습니다. 이렇게 하려면 다음 명령을 사용하여 example.com을 사이트 이름으로 바꾸세요.

sudo nano /var/www/example.com/.htaccess

.htaccess의 일반적인 용도

1. 모드_고쳐 쓰기

파일의 가장 유용한 측면 중 하나입니다. .htaccess 파일 공간은 URL과 웹 페이지가 사이트에 표시되는 방식을 정의/변경하는 데 사용할 수 있습니다. 이 작업이 수행되는 방법에 대한 자세한 내용은 이 링크에서 확인할 수 있습니다.

2. 인증

.htaccess 파일에는 표준 apache2.conf 구성 파일만큼 많은 권한이 필요하지 않지만 여전히 사이트 보안을 효과적으로 변경하는 데 사용할 수 있습니다. 사실 .htaccess를 사용하면 웹 페이지의 특정 섹션에 액세스하기 위한 비밀번호를 요청할 수 있습니다. .htaccess 비밀번호는 .htpasswd라는 파일에 저장됩니다.

메모: 보안상의 이유로 이러한 파일을 사이트 디렉터리에 저장하는 것은 엄격히 권장되지 않습니다.

.htpasswd 파일에서 사이트의 보안 부분에 대한 액세스가 허용된 모든 사용자의 이름과 비밀번호를 지정해야 합니다.

사용자 이름과 비밀번호는 user_name:encrypted_password 쌍으로 파일에 입력됩니다. 예를 들어 best_user라는 사용자의 비밀번호가 awesome인 경우 해당 쌍은 "best_user:VtweQU73iyETM"과 유사할 수 있습니다.

메모: 각 쌍은 별도의 줄에 입력됩니다. .htpasswd 파일에는 필요한 만큼의 행이 포함될 수 있습니다.

.htpasswd를 생성한 후 .htaccess에 다음 코드를 추가하여 인증 기능을 활성화합니다.

AuthUserFile /usr/local/username/safedirectory/.htpasswd
인증그룹파일 /dev/null
AuthName 비밀번호를 입력해주세요
인증 유형 기본
유효한 사용자 필요

인증사용자파일.htpasswd 파일의 경로를 정의합니다.

인증그룹파일 location.htgroup을 지정합니다. 현재 그러한 파일이 없으므로 /dev/null에 그대로 두십시오.

인증 이름비밀번호 프롬프트에 표시될 텍스트를 포함합니다(어떤 텍스트라도 입력할 수 있습니다).

인증 유형비밀번호를 확인하는 데 사용되는 인증 유형을 나타냅니다. 비밀번호는 HTTP를 통해 확인되며 Basic 키워드는 변경할 수 없습니다.

필요하다유효한-사용자.htaccess 파일은 여러 사람이 사이트의 비밀번호로 보호된 섹션에 액세스할 수 있어야 함을 알려줍니다. 사이트의 제한된 부분에 액세스할 수 있는 특정 사람을 지정해야 하는 경우 유효한 사용자 필요 라인 대신 사용자 필요 라인이 사용됩니다. 사용자 이름.

3. 사용자 정의 오류 페이지

.htaccess 파일을 사용하면 사이트에 대한 사용자 정의 오류 페이지를 만들 수 있습니다. 가장 흔한 실수 중 일부는 다음과 같습니다.

  • 400 잘못된 요청
  • 401 인증 필요
  • 403 금지된 페이지
  • 404 파일을 찾을 수 없습니다.
  • 500 내부 오류

사용자 정의 오류 페이지는 사이트 페이지를 더 친숙하게 만들고 사이트 방문자에게 기본 서버 오류 페이지보다 더 자세한 정보를 제공한다는 목표로 만들어졌습니다.

예를 들어 404 페이지를 만들 수 있습니다(원하는 오류 페이지를 만들어 보세요).

오류 페이지를 생성하고 로드한 후 .htaccess 파일에 해당 위치를 지정합니다.

오류문서 404 /new404.html

기억하다: Apache는 사이트의 루트 디렉터리에서 404 페이지를 찾습니다. 하위 디렉터리에 새 404 오류 페이지를 배치할 때 해당 하위 디렉터리를 줄에 추가해야 합니다. 예를 들면 다음과 같습니다.

오류문서 404 /error_pages/new404.html

4. MIME 유형

서버가 표시하도록 구성되지 않은 일부 응용 프로그램 파일을 사이트에서 호스팅하는 경우 다음 코드를 사용하여 Apache 서버의 MIME 유형을 .htaccess 파일에 추가할 수 있습니다.

AddType 오디오/mp4a-latm .m4a

애플리케이션과 파일 확장자를 지원하려는 MIME 유형으로 바꾸십시오.

5.SSI

서버 측 포함 기술은 웹 사이트에서 시간을 크게 절약해 줍니다. SSI를 사용하는 가장 일반적인 방법 중 하나는 각 페이지를 개별적으로 업데이트할 필요 없이(예: 페이지 하단의 인용 변경) 특정 데이터 블록이 포함된 많은 페이지를 업데이트하는 것입니다.

SSI를 활성화하려면 .htaccess에 다음 코드를 입력하세요.

AddType 텍스트/html .shtml
AddHandler 서버 구문 분석.shtml

이 줄은 .htaccess에 .shtml 파일이 유효함을 알려주고, 두 번째 줄은 SSI 명령에 대해 .shtml로 끝나는 모든 파일을 확인하도록 서버에 지시합니다.

그러나 서버에 .html 페이지가 많고 확장자가 .shtml로 변경되는 데 많은 시간이 걸리는 경우 다른 전략을 사용하여 해당 페이지에서 SSI 명령을 확인할 수 있습니다. 이를 위해 XBitHack 매개변수가 사용됩니다.

.htaccess 파일에 이 행을 추가하면 Apache는 서버측 포함에 대한 적절한 권한이 있는 모든 html 파일을 확인하게 됩니다.

페이지에서 XBitHack을 사용하도록 허용하려면 다음을 입력하세요.

chmod +x 페이지_이름.html

결과

이 가이드에서는 .htaccess 페이지의 기본 기능만 다루지만 이를 통해 사이트 작업이 훨씬 더 유연해집니다. .htaccess 파일의 기능에 대해 질문이나 추가 사항이 있으면 의견을 남겨주세요.

태그: ,