> 백엔드 개발 > PHP 튜토리얼 > Apache .htaccess 파일에 대한 자세한 설명 및 구성 기술 요약

Apache .htaccess 파일에 대한 자세한 설명 및 구성 기술 요약

PHP中文网
풀어 주다: 2016-08-18 09:15:42
원래의
2015명이 탐색했습니다.

1. .htaccess의 기본 기능

.htaccess는 Apache 서버 구성과 관련된 지침을 저장하는 일반 텍스트 파일입니다.
.htaccess의 주요 기능은 URL 재작성, 사용자 정의 오류 페이지, MIME 유형 구성 및 액세스 제어 등입니다. 주로 의사 정적 애플리케이션, 이미지 핫링크 보호, 사용자 정의 404 오류 페이지, 특정 IP/IP 세그먼트 차단/허용, 디렉토리 검색 및 홈페이지, 지정된 파일 형식에 대한 액세스 금지, 파일 비밀번호 보호 등에 반영됩니다.
.htaccess의 사용 범위는 주로 현재 디렉터리에 대한 것입니다.


2. .htaccess 구성 활성화
.htaccess를 활성화하려면 httpd.conf를 수정하고 AllowOverride를 활성화한 다음 AllowOverride를 사용하여 특정 명령의 사용을 제한해야 합니다.
httpd.conf 파일을 텍스트 편집기로 연 후

을 검색하여 다음과 같이 코드를 복사하세요.

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
改为:
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
로그인 후 복사


파일 이름을 사용해야 하는 경우 .htaccess 이외의 파일은 AccessFileName 명령을 사용하여 변경할 수 있습니다. 예를 들어 .config를 사용해야 하는 경우 서버 구성 파일에서 다음과 같이 구성할 수 있습니다.

다음과 같이 코드를 복사합니다.

AccessFileName .config
로그인 후 복사

3. .htaccess 액세스 제어

1. 액세스 제어의 기본: 명령 명령

사용자가 일부 주요 디렉터리에 액세스하지 못하도록 제한하기 위해 일반적으로 .htaccess 파일이 추가됩니다.

다음과 같이 코드를 복사하세요.

<Files  ~ "^.*\.([Ll][Oo][Gg])|([eE][xX][eE])">
 Order allow,deny
 Deny from all
</Files>
로그인 후 복사

설명:

(1) Files 뒤의 물결선은 "일반"을 나타냅니다. 표현"이 활성화됩니다. 간단한 쓰기 방법은

(2) Order 명령: Allow, Deny 매개변수를 통해 Apache는 먼저 Allow 명령을 찾아서 적용한 다음 Deny 명령을 적용하여 모든 액세스를 차단할 수도 있습니다.

4. URL 재작성

다음은 URL 재작성 규칙의 간단한 예입니다.

다음과 같이 코드를 복사하세요.


# Will RewriteEngine 모드가 켜져 있습니다
RewriteEngine On
# Rewrite 시스템 규칙을 수정하지 마세요
RewriteRule ^p/([0-9]+).html$ index.php?post_id=$1
RewriteRule ^ u- (username|uid)-(.+).html$ space.php?$1=$2


그 중 RewriteEngine은 URL 재작성을 켜는 것을 의미하고 RewriteRule은 재작성 규칙입니다.

5. 구성 오류 페이지

기본 구문은 다음과 같습니다.

다음과 같이 코드를 복사하세요.

# custom error documents
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php
로그인 후 복사

6. 일반적인 htaccess 명령 및 구성 팁
1. 디렉토리 목록 표시 비활성화
때로는 어떤 이유로 디렉토리에 인덱스 파일이 없는 경우가 있습니다. 브라우저 주소 표시줄 디렉토리 경로를 지정하면 디렉토리에 있는 모든 파일이 표시되므로 웹 사이트에 보안 위험이 따릅니다.
이를 방지하려면(새 인덱스 파일을 여러 개 만들지 않고도) .htaccess 문서에 다음 명령을 입력하여
디렉터리 목록이 표시되지 않도록 할 수 있습니다.

코드는 다음과 같습니다:

Options -Indexes


2. 특정 IP 주소를 차단/허용
경우에 따라 특정 IP만 허용하려는 경우도 있습니다. 사용자는 다음을 수행할 수 있습니다. 귀하의 웹 사이트에 액세스하거나(예: 특정 ISP를 사용하는 사용자만 디렉토리에 들어갈 수 있도록 허용) 또는 특정 IP 주소를 차단하려고 할 수도 있습니다(예: 정보 페이지에서 낮은 수준의 사용자를 격리하기 위해). 물론 이 방법은 차단하려는 IP 주소를 알고 있는 경우에만 작동합니다. 그러나 요즘 온라인 사용자 대부분은 동적 IP 주소를 사용하므로 이는 사용을 제한하는 일반적인 방법은 아닙니다.
다음 명령을 사용하여 IP 주소를 차단할 수 있습니다.

다음과 같이 코드를 복사하세요.

deny from 000.000.000.000


000.000. 여기서 000.000은 차단된 IP 주소의 경우, 그 중 몇 개만 지정하면 전체 네트워크 세그먼트의 주소를 차단할 수 있습니다. 210.10.56.을 입력하면 210.10.56.0부터 210.10.56.255까지의 모든 IP 주소가 차단됩니다.
다음 명령을 사용하여 IP 주소가 웹 사이트에 액세스하도록 허용할 수 있습니다.

다음과 같이 코드 코드를 복사하세요.

allow from 000.000.000.000


허용 IP 주소는 000.000.000.000 입니다. IP 주소를 금지하는 것과 마찬가지로 전체 네트워크 세그먼트를 허용할 수 있습니다.
모든 사람이 디렉토리에 액세스하는 것을 방지하려면 다음을 사용할 수 있습니다.

다음과 같이 코드를 복사합니다.

모두 거부


그러나 이것은 이 디렉토리에 있는 스크립트의 문서 사용에 영향을 주지 않습니다.
3. 인덱스 파일 교체
index.htm 또는 index.html을 항상 디렉토리의 인덱스 파일로 사용하고 싶지 않을 수도 있습니다. 예를 들어, 사이트에서 PHP 파일을 사용하는 경우 다음을 사용할 수 있습니다. index.php는 이 디렉토리의 색인 문서 역할을 합니다. 물론 "인덱스" 문서로 제한할 필요는 없습니다. 원하는 경우 .htaccess를 사용하여 설정할 수도 있습니다. foofoo.balh를 색인 문서로 사용하세요!
이러한 상호 대체 색인 파일은 목록으로 정렬될 수 있으며, 서버는 실제 디렉터리에 어떤 문서가 존재하는지 확인하기 위해 왼쪽에서 오른쪽으로 검색합니다. 아무 것도 발견되지 않으면 디렉터리 목록이 표시됩니다(디렉터리 파일 목록 표시를 끄지 않은 경우).

다음과 같이 코드를 복사하세요.

DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm


4.重定向(rewrite)
.htaccess 最有用的功能之一就是将请求重定向到同站内或站外的不同文档。这在你改变了一个文件名称,但仍然想让用户用旧地址访问到它时,变的极为有用。另一个应用(我发现的很有用的)是重定向到一个长URL,例如在我的时事通讯中,我可以使用一个很简短的URL来指向我的会员链接。以下是一个重定向文件的例子:

复制代码代码如下:

Redirect /location/from/root/file.ext http:    ///new/file/location.xyz
로그인 후 복사


上述例子中,访问在root目录下的名为oldfile.html可以键入:

复制代码代码如下:

/oldfile.html
访问一个旧次级目录中的文件可以键入:

/old/oldfile.html


你也可以使用.htaccess重定向整个网站的目录。假如你的网站上有一个名为olddirectory的目录,并且你已经在一个新网站http: ///newdirectory/上建立了与上相同的文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:

复制代码代码如下:

Redirect /olddirectory http: ///newdirectory
로그인 후 복사


这样,任何指向到站点中/olddirectory目录的请求都将被重新指向新的站点,包括附加的额外URL信息。例如有人键入:


http: ///olddirecotry/oldfiles/images/image.gif
请求将被重定向到:

http: ///newdirectory/oldfiles/images/image.gif


如果正确使用,此功能将极其强大。

七、安全配置
下面的htaccess代码能够提高你的web服务器的安全水平。图片链接盗用保护非常有用,它能防止其他人偷盗使用你的服务器上的图片资源。
1. 通过.htaccess放盗链
痛恨那些偷盗链接你的web服务器上的图片资源而耗尽了你的带宽的行为吗?试试这个,你可以防止这种事情的发生。

复制代码代码如下:

RewriteBase /  
RewriteCond %{HTTP_REFERER} !^$  
RewriteCond %{HTTP_REFERER} !^http://(www.)?php.cn/.*$ [NC]  
RewriteRule .(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]
로그인 후 복사


2. 防黑客
如果你想提高网站的安全等级,你可以去掉下面的几行代码,这样可以防止一些常见恶意URL匹配的黑客攻击技术。

复制代码代码如下:

RewriteEngine On  
# proc/self/environ? 没门!  
RewriteCond %{QUERY_STRING} proc/self/environ [OR]  
# 阻止脚本企图通过URL修改mosConfig值  
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|%3D) [OR]  
# 阻止脚本通过URL传递的base64_encode垃圾信息  
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]  
# 阻止在URL含有<script>标记的脚本  
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]  
# 阻止企图通过URL设置PHP的GLOBALS变量的脚本  
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]  
# 阻止企图通过URL设置PHP的_REQUEST变量的脚本  
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})  
# 把所有被阻止的请求转向到403禁止提示页面!  
RewriteRule ^(.*)$ index.php [F,L]
로그인 후 복사


3. 阻止访问你的 .htaccess 文件或者指定类型的文件
下面的代码可以阻止别人访问你的.htaccess文件。同样,你也可以设定阻止多种文件类型。

# 保护你的 htaccess 文件  
<Files .htaccess>  
order allow,deny  
deny from all  
</Files>  
# 阻止查看指定的文件  
<Files secretfile.jpg>  
order allow,deny  
deny from all  
</Files>  
# 多种文件类型  
<FilesMatch “.(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$”>  
 Order Allow,Deny  
Deny from all  
</FilesMatch>[/code]
로그인 후 복사

4.禁止脚本执行,加强你的目录安全

复制代码代码如下:

# 禁止某些目录里的脚本执行权限  
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi  
Options -ExecCGI
로그인 후 복사


八、一些常用的设置
1.时区设置
有些时候,当你在PHP里使用date或mktime函数时,由于时区的不同,它会显示出一些很奇怪的信息。下面是解决这个问题的方法之一。就是设置你的服务器的时区。你可以在这里找到所有支持的时区的清单。
1.SetEnv TZ Australia/Melbourne
2. seo/seo.html" target="_blank">搜索引擎友好的301永久转向方法
为什么这是搜索引擎友好的呢?因为现在很多现代的搜索引擎都有能根据检查301永久转向来更新它现有的记录的功能。

复制代码代码如下:

Redirect 301 http:    //www.php.cn/article/index http:    //www.php.cn/article/
로그인 후 복사


3. 屏蔽下载对话框
通常,当你下载东西的时候,你会看到一个对话框询问你是保持这个文件还是直接打开它。如果你不想看到这个东西,你可以把下面的一段代码放到你的.htaccess文件里。

复制代码代码如下:

AddType application/octet-stream .pdf  
AddType application/octet-stream .zip  
AddType application/octet-stream .mov
로그인 후 복사


4. 省去www前缀
SEO的一个原则是,确保你的网站只有一个URL。因此,你需要把所有的通过www的访问转向的非www,或者反这来。

复制代码代码如下:

RewriteEngine On  
RewriteBase /  
RewriteCond %{HTTP_HOST} ^www.php.cn [NC]  
RewriteRule ^(.*)$ http:    //www.php.cn/$1 [L,R=301]
로그인 후 복사


5. 个性化Error页面
对每个错误代码定制自己个性化的错误页面。

复制代码代码如下:

ErrorDocument 401 /error/401.php  
ErrorDocument 403 /error/403.php  
ErrorDocument 404 /error/404.php  
ErrorDocument 500 /error/500.php
로그인 후 복사


6. 压缩文件
通过压缩你的文件体积来优化网站的访问速度。

复制代码代码如下:

# 压缩 text, html, javascript, css, xml:  
AddOutputFilterByType DEFLATE text/plain  
AddOutputFilterByType DEFLATE text/html  
AddOutputFilterByType DEFLATE text/xml  
AddOutputFilterByType DEFLATE text/css  
AddOutputFilterByType DEFLATE application/xml  
AddOutputFilterByType DEFLATE application/xhtml+xml  
AddOutputFilterByType DEFLATE application/rss+xml  
AddOutputFilterByType DEFLATE application/javascript  
.AddOutputFilterByType DEFLATE application/x-javascript
로그인 후 복사


7. 缓存文件
缓存文件是另外一个提高你的网站访问速度的好方法。

复制代码代码如下:

<FilesMatch “.(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$”>  
Header set Cache-Control “max-age=2592000″  
</FilesMatch>
로그인 후 복사


8. 对某些文件类型禁止使用缓存
而另一方面,你也可以定制对某些文件类型禁止使用缓存。

复制代码代码如下:

# 显式的规定对脚本和其它动态文件禁止使用缓存  
<FilesMatch “.(pl|php|cgi|spl|scgi|fcgi)$”>  
Header unset Cache-Control  
</FilesMatch>
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿