ホームページ  >  記事  >  バックエンド開発  >  Apache .htaccess ファイルの詳しい説明と設定手法の概要

Apache .htaccess ファイルの詳しい説明と設定手法の概要

PHP中文网
PHP中文网オリジナル
2016-08-18 09:15:421957ブラウズ

1. .htaccess の基本機能

.htaccess は、Apache サーバーの設定に関連する命令を保存するプレーン テキスト ファイルです。
.htaccess の主な機能は、URL 書き換え、カスタムエラーページ、MIME タイプの設定とアクセス制御などです。主に、擬似静的アプリケーション、画像ホットリンク保護、カスタム 404 エラー ページ、特定の IP/IP セグメントのブロック/許可、ディレクトリの参照とホームページ、指定されたファイル タイプへのアクセスの禁止、ファイル パスワード保護などに反映されます。 E .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) ファイルの後の波線は、「正規表現」が有効であることを示します。簡単に書くと、073204447274641b4c6ff9450252faeb となります。

(2) Order コマンド:Allow、Deny パラメーターを通じて、Apache は最初にAllow コマンドを見つけて適用し、次に Deny コマンドを適用してすべてのアクセスをブロックすることもできます。

4. URL 書き換え

以下は、単純な URL 書き換えルールの例です:

次のようにコードをコピーします:

# 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.リスト
場合によっては、何らかの理由でディレクトリにインデックス ファイルが存在しないことがあります。つまり、誰かがブラウザのアドレス バーにディレクトリへのパスを入力すると、ディレクトリ内のすべてのファイルが表示され、セキュリティ上のリスクが残ります。 Webサイト。
これを回避するには (新しいインデックス ファイルを大量に作成することなく)、.htaccess ドキュメントに次のコマンドを入力して、
ディレクトリのリストが表示されないようにすることができます:

次のようにコードをコピーします:

オプション -インデックス

2. 特定の IP アドレスをブロック/許可する
場合によっては、特定の IP を持つユーザーのみに Web サイトへのアクセスを許可したい場合があります (例: 特定の 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 アドレスによる Web サイトへのアクセスを許可できます:

次のようにコードをコピーします:

000.000.000.000 から許可します

許可される IP アドレスは 000.000.000.000 です。IP 全体を許可できます。ネットワークセグメントを禁止するのと同じようにアドレスを設定します。
全員がこのディレクトリにアクセスできないようにしたい場合は、以下を使用できます:

次のようにコードをコピーします:

deny from all

ただし、これは、スクリプトによるこのディレクトリ内のドキュメントの使用には影響しません。
3. インデックス ファイルを置き換える
ディレクトリのインデックス ファイルとして常にindex.htm またはindex.html を使用したくないかもしれません。たとえば、サイトで PHP ファイルを使用している場合は、次のようにするとよいでしょう。 Index.php は、このディレクトリのインデックス ドキュメントとして機能します。もちろん、「インデックス」ドキュメントに限定する必要はありません。必要に応じて、.htaccess を使用して次のように設定することもできます。 foofoo.balh をインデックスドキュメントとして使用してください。
これらの相互に置き換えられるインデックスファイルはリストに配置することができ、サーバーは左から右に検索して実際のディレクトリにどのドキュメントが存在するかを確認します。何も見つからない場合は、ディレクトリのリストが表示されます (ディレクトリ ファイルのリストの表示をオフにしていない限り)。

次のようにコードをコピーします:

DirectoryIndexindex.phpindex.php3messagebrd.plindex.htmlindex.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>


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。