apache .htaccess檔案詳解與設定技巧總結
一、.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=$1RewriteRule ^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
1. ,你的目錄裡沒有index文件,這意味著當有人在瀏覽器地址欄鍵入了該目錄的路徑,該目錄下所有的文件都會顯示出來,這會給你的網站留下安全隱患。
為避免這種情況(而不必創建一堆的新index文件),你可以在你的.htaccess文檔中鍵入以下命令,用以阻止目錄列表的顯示:
複製代碼代碼如下:
Options -Indexes
某些情況下,你可能只想允許某些特定IP的用戶可以訪問你的網站(例如:只允許使用特定ISP的用戶進入某個目錄),或想封鎖某些特定的IP位址(例如:將低階使用者隔離於你的資訊版面外)。當然,這只在你知道你想攔截的IP位址時才有用,然而現在網路上的大多數用戶都使用動態IP位址,所以這並不是限制使用的常用方法。
你可以使用以下指令封鎖一個IP位址:複製程式碼如下:
deny from 000.000.000.000
你可以使用以下指令允許一個IP位址存取網站:
複製碼碼如下:
allow from 000.000.000.000
被允許的IP位址則為000.000。網段。
如果你想阻止所有人存取該目錄,則可以使用:
複製程式碼如下:
不過這並不影響腳本程式使用這個目錄下的文件。
3.替換index檔也許你不想一直使用index.htm或index.html作為目錄的索引檔。舉例來說,如果你的網站使用PHP文件,你可能會想使用
index.php來作為該目錄的索引文件。當然也不必局限於「index」文檔,如果你願意,使用.htaccess你甚至能夠設定
foofoo.balh來當你的索引文件!
這些互為替換的索引檔案可以排成一個列表,伺服器會從左到右進行尋找,檢查哪個文檔在真實的目錄中存在。如果一個也找不到,它將把目錄清單顯示出來(除非你已經關閉了顯示目錄檔案清單)。
複製程式碼如下:
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>

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

要在 Apache 中設置 CGI 目錄,需要執行以下步驟:創建 CGI 目錄,如 "cgi-bin",並授予 Apache 寫入權限。在 Apache 配置文件中添加 "ScriptAlias" 指令塊,將 CGI 目錄映射到 "/cgi-bin" URL。重啟 Apache。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

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

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。
