首頁 後端開發 php教程 apache .htaccess檔案詳解與設定技巧總結

apache .htaccess檔案詳解與設定技巧總結

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

一、.htaccess的基本作用

       .htaccess是純文字文件,它裡面存放著Apache伺服器設定相關的指令。
       .htaccess主要的功能有:URL重寫、自訂錯誤頁面、MIME類型設定以及存取權限控制等。主要體現在偽靜態的應用、圖片防盜鏈、自訂404錯誤頁面、阻止/允許特定IP/IP段、目錄瀏覽與主頁、禁止存取指定文件類型、文件密碼保護等。
       .htaccess的用途範圍主要針對目前目錄。


二、啟用.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
登入後複製

 

三、.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命令,以阻止所有訪問,也可以使用Deny,Allow。

四、URL重寫

下面是一段簡單的URL重寫規則範例:

複製程式碼如下:

# 將RewriteEngine 模式開啟? /([0-9]+).html$ index.php?post_id=$1

RewriteRule ^u-(username|uid)-(.+).html$ space.php?$1=$2


其中,RewriteEngine表示開啟URL重寫,RewriteRule是重寫規則。

 

五、設定錯誤頁

基本語法如下:

複製碼代碼如下:

# custom error documents
ErrorDocument 401 /err/401.php
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
ErrorDocument 500 /err/500.php
登入後複製

 

六、htaccess常用指令和設定技巧

1. ,你的目錄裡沒有index文件,這意味著當有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的文件都會顯示出來,這會給你的網站留下安全隱患。

為避免這種情況(而不必創建一堆的新index文件),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止

目錄列表的顯示:

複製代碼代碼如下:

Options -Indexes

2.阻止/允許特定的IP位址

某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網站(例如:只允許使用特定ISP的用戶進入某個目錄),或想封鎖某些特定的IP位址(例如:將低階使用者隔離於你的資訊版面外)。當然,這只在你知道你想攔截的IP位址時才有用,然而現在網路上的大多數用戶都使用動態IP位址,所以這並不是限制使用的常用方法。

你可以使用以下指令封鎖一個IP位址:

複製程式碼如下:


deny from 000.000.000.000

這裡的000.000.000.000則可封禁整個網段的位址。如你輸入210.10.56.,則將封鎖210.10.56.0~210.10.56.255的所有IP位址。

你可以使用以下指令允許一個IP位址存取網站:

複製碼碼如下:

allow from 000.000.000.000

被允許的IP位址則為000.000

被允許的IP位址則為000.000。網段。

如果你想阻止所有人存取該目錄,則可以使用:


複製程式碼如下:

deny from all

不過這並不影響腳本程式使用這個目錄下的文件。

3.替換index檔

也許你不想一直使用index.htm或index.html作為目錄的索引檔。舉例來說,如果你的網站使用PHP文件,你可能會想使用 index.php來作為該目錄的索引文件。當然也不必局限於「index」文檔,如果你願意,使用.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>
登入後複製


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

繼續使用PHP:耐力的原因 繼續使用PHP:耐力的原因 Apr 19, 2025 am 12:23 AM

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。

IIS和PHP的兼容性:深度潛水 IIS和PHP的兼容性:深度潛水 Apr 22, 2025 am 12:01 AM

IIS和PHP可以兼容,通過FastCGI實現。 1.IIS通過配置文件將.php文件請求轉發給FastCGI模塊。 2.FastCGI模塊啟動PHP進程處理請求,提高性能和穩定性。 3.實際應用中需注意配置細節、錯誤調試和性能優化。

如果session_start()被多次調用會發生什麼? 如果session_start()被多次調用會發生什麼? Apr 25, 2025 am 12:06 AM

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

nginx和apache:了解關鍵差異 nginx和apache:了解關鍵差異 Apr 26, 2025 am 12:01 AM

NGINX和Apache各有優劣,選擇應基於具體需求。 1.NGINX適合高並發場景,因其異步非阻塞架構。 2.Apache適用於需要復雜配置的低並發場景,因其模塊化設計。

See all articles