ホームページ バックエンド開発 PHPチュートリアル Apache .htaccess ファイルの詳しい説明と設定手法の概要

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

Aug 18, 2016 am 09:15 AM
apache htaccess php

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) ファイルの後の波線は、「正規表現」が有効であることを示します。簡単に書くと、 となります。

(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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

ApacheでCGIディレクトリを設定する方法 ApacheでCGIディレクトリを設定する方法 Apr 13, 2025 pm 01:18 PM

ApacheでCGIディレクトリを設定するには、次の手順を実行する必要があります。「CGI-Bin」などのCGIディレクトリを作成し、Apacheの書き込み許可を付与します。 Apache構成ファイルに「Scriptalias」ディレクティブブロックを追加して、CGIディレクトリを「/cgi-bin」URLにマッピングします。 Apacheを再起動します。

Apache80ポートが占有されている場合はどうすればよいですか Apache80ポートが占有されている場合はどうすればよいですか Apr 13, 2025 pm 01:24 PM

Apache 80ポートが占有されている場合、ソリューションは次のとおりです。ポートを占有するプロセスを見つけて閉じます。ファイアウォールの設定を確認して、Apacheがブロックされていないことを確認してください。上記の方法が機能しない場合は、Apacheを再構成して別のポートを使用してください。 Apacheサービスを再起動します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

Apacheのデータベースに接続する方法 Apacheのデータベースに接続する方法 Apr 13, 2025 pm 01:03 PM

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

Apacheを始める方法 Apacheを始める方法 Apr 13, 2025 pm 01:06 PM

Apacheを開始する手順は次のとおりです。Apache(コマンド:sudo apt-get install apache2または公式Webサイトからダウンロード)をインストールします(linux:linux:sudo systemctl start apache2; windows:apache2.4 "serviceを右クリックして「開始」を右クリック) (オプション、Linux:Sudo SystemCtl

See all articles