當(dāng)前位置:首頁>WordPress建站>網(wǎng)站維護(hù)>網(wǎng)站管理員和Web開發(fā)人員.htaccess入門指南

網(wǎng)站管理員和Web開發(fā)人員.htaccess入門指南

在很多自定義Web服務(wù)器的工具中,.htaccess配置文件是一個(gè)非常實(shí)用的工具。你可以快速重置文檔類型、解析引擎、URL重定向以具體用法。在本文中,我想為網(wǎng)站管理員和Web開發(fā)人員提供一些更有目的性的概念。 .htaccess 提供了非常多的可定制性,它可以在從PHP到Ruby的任何Web語言中使用。 任何在Apache服務(wù)器上搭建自己網(wǎng)站的人肯定想了解如何管理他們的.htaccess文件。

在這篇文章的底部,我添加了一些外部Web應(yīng)用程序來幫助新手動(dòng)態(tài)生成.htaccess文件

為什么要使用.htaccess文件?

這是一個(gè)很好的問題,也許我們應(yīng)該首先回答“什么是.htaccess文件”?它是Apache Web服務(wù)器使用的一個(gè)非常特殊的配置文件。.htaccess文件可以告訴Web服務(wù)器如何呈現(xiàn)各種形式的信息以及如何處理各種HTTP請求標(biāo)頭。

真的,這是一種分散 Web服務(wù)器設(shè)置的方法。一個(gè)物理服務(wù)器可以擁有50個(gè)不同的網(wǎng)站,每個(gè)網(wǎng)站都有自己的.htaccess文件。它為網(wǎng)站管理員提供了很多權(quán)力,否則這是不可能的。但是你為什么要用一個(gè)呢?

最大的原因是安全。您可以鎖定某些目錄或使其受密碼保護(hù)。這非常適合私人項(xiàng)目或新的內(nèi)容管理系統(tǒng),您需要一些額外的安全性。但是也有一些常見的任務(wù),例如將404錯(cuò)誤消息重定向到某個(gè)網(wǎng)頁。這只需要一行代碼,它可以極大地影響訪問者對404頁面的反應(yīng)。

說實(shí)話,我沒有太多理由去說服別人.htaccess文件值得去理解和應(yīng)用。一旦你看到它在行動(dòng),你就可以知道來自這個(gè)微小的配置文件的所有價(jià)值。此外,我希望本文的其余部分可以提供一些有見地的話題,讓網(wǎng)站管理員了解如何管理.htaccess配置。

允許/拒絕訪問

可以識(shí)別潛在的垃圾訪問者并拒絕他們訪問您的網(wǎng)站。這可能有點(diǎn)極端,但是如果你知道一個(gè)人或一群人一直在瞄準(zhǔn)你的網(wǎng)站,你可以通過IP地址選擇域引用來拒絕或禁止訪問者。

order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all

這些示例代碼是從Htaccess指南中復(fù)制的,因?yàn)樗鼈兪侨腴T的完美模板。請注意,第二個(gè)IP地址缺少第4個(gè)整數(shù)。此代碼塊將以第一個(gè)IP(255.0.0.0)和123.45.6.0-255范圍內(nèi)的每個(gè)IP為目標(biāo),然后允許所有其他流量。網(wǎng)站管理員可能不會(huì)像其他技術(shù)那樣經(jīng)常使用它,但它有助于理解。

阻止目錄列表

有時(shí)你有一個(gè)打開的目錄,默認(rèn)情況下設(shè)置為允許瀏覽。這意味著用戶可以查看內(nèi)部目錄結(jié)構(gòu)中列出的所有文件,例如images文件夾。一些網(wǎng)站管理員不希望允許目錄列表,下面的代碼片段就可以實(shí)現(xiàn)。

Options -Indexes

我已經(jīng)看到這個(gè)答案在Stack Overflow中 出現(xiàn)了數(shù)次,它可能是最容易記住的.htaccess規(guī)則之一。

實(shí)際上可以在每個(gè)目錄中創(chuàng)建多個(gè).htaccess文件,因此可能其中一個(gè)受密碼保護(hù),但其他文件不受密碼保護(hù)。你仍然可以保留Options -Indexes以便訪問者無法瀏覽你的網(wǎng)站/圖像/文件夾。

密碼保護(hù)目錄

密碼保護(hù)目錄是保護(hù)管理區(qū)域和對您的網(wǎng)站至關(guān)重要的其他文件夾的一種非常常見的過程。你可以用來設(shè)置極少數(shù)人可以訪問這些目錄,或者用來防止黑客訪問你的網(wǎng)站管理面板。但無論哪種用途,它都是解決許多問題的非常強(qiáng)大的解決方案。

這里有一篇密碼保護(hù)指南,介紹了重要的代碼片段。你需要生成一個(gè)存儲(chǔ)用戶名/密碼憑據(jù)的密碼文件。以便Apache檢查用戶輸入的內(nèi)容,看看是否應(yīng)該授予他們訪問權(quán)限。請注意查看如何生成用戶名和密碼的示例。

我建議使用這個(gè)htpassword生成器,可以節(jié)省一些時(shí)間。它的語法總是很完美,你不需要自己加密密碼。另一個(gè)很好的選擇是密碼保護(hù)整個(gè)目錄列表:

AuthType Basic
AuthName "This Area is Password Protected"
AuthUserFile /full/path/to/.htpasswd
Require valid-user

WordPress安全

為了充分利用這個(gè)密碼保護(hù)的想法,讓我們展示一個(gè)真實(shí)的例子。這個(gè)更復(fù)雜的代碼片段將強(qiáng)制用戶身份驗(yàn)證訪問WordPress wp-login.php文件的任何人。你可以在Ask Apache上找到原始源代碼,其中包含許多其他的WordPress保護(hù)代碼。

<Files wp-login.php>
Order Deny,Allow
Deny from All
Satisfy Any
AuthName "Protected By AskApache"
AuthUserFile /web/askapache.com/.htpasswda1
AuthType Basic
Require valid-user
</Files>

如果你要遵循這些.htaccess規(guī)則,它也可能有助于密碼保護(hù)管理區(qū)域。通常,wp-login.php是攻擊者最頻繁訪問的文件。所以,上面的示例代碼也足以為你的WordPress網(wǎng)站增加安全性

推薦閱讀《15個(gè)有用的WordPress .htaccess 代碼片段

HTTP URL重寫規(guī)則

重寫URL可能是.htaccess文件最常用的一種功能。WordPress默認(rèn)安裝實(shí)際上可以直接從管理面板生成.htaccess文件。這樣你就可以設(shè)置 .php?p=1 結(jié)構(gòu)的漂亮鏈接。

讓我們看一下如何將下劃線更改為破折號(hào)的重寫示例,因?yàn)樗?strong>包含許多最重要的元素。

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
  
RewriteRule !\.(html|php)$ - [S=4]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
  
RewriteCond %{ENV:uscor} ^Yes$
RewriteRule (.*) http://d.com/$1 [R=301,L]

RewriteEngineRewriteBase通常都是默認(rèn)這樣設(shè)置。你需要開啟RewriteEngine,才能正常工作。網(wǎng)上有很多指南解釋如何啟用mod_rewrite,您的托管服務(wù)提供商也可以提供幫助。

請注意,語法遵循頂部的RewriteRules模式。這些規(guī)則用于匹配作為HTTP請求重寫的情況。RewriteRule會(huì)在符合情況的時(shí)候,將所有內(nèi)容重定向到域名d.com。而 ?[R=301,L] 這樣的結(jié)束括號(hào)稱為重寫標(biāo)志,這些標(biāo)志很重要,要討論這個(gè)就非常復(fù)雜了,在此不展開了。

mod_rewrite語法肯定有點(diǎn)令人困惑,但不要被嚇倒!在其他示例中,片段看起來容易得多。

剛開始時(shí),我推薦使用這個(gè)mod_rewrite生成器,它可以幫助你使用真實(shí)的URL來生成代碼示例。這是一個(gè)很棒的工具,因?yàn)槟憧梢栽谡Z法中查找各種項(xiàng)目,以查看它們在重寫規(guī)則中的實(shí)際操作。

RewriteRule ^dir/([0-9]+)/?$ /index.php?id=$1 [L]

不要試圖一次性就能掌握這些規(guī)則。我花了3-4個(gè)多月才真正開始了解如何使用 [0-9a-zA-Z]+? 和類似模式重寫URL。繼續(xù)練習(xí),我保證你會(huì)有所收獲的!

網(wǎng)站管理員的代碼片段

我喜歡易于使用的片段,我想為網(wǎng)站管理員整理這些相關(guān)的.htaccess代碼。這些想法中的每一個(gè)都可以很好地應(yīng)用在你自己的.htaccess文件以及其他代碼塊。這些代碼片段中的大多數(shù)都非常適合解決Web服務(wù)器環(huán)境中的某些問題

設(shè)置DirectoryIndex

DirectoryIndex 命令通常用在第一行。用來告訴Apache哪些文檔最初應(yīng)被視為“主”文檔。默認(rèn)情況下,應(yīng)該使用諸如index.html、index.php、index.asp和其他索引文件之類的項(xiàng)目。通過使用我在下面復(fù)制的代碼片段,你可以將此根文檔制作成你喜歡的任何內(nèi)容。

DirectoryIndex index.html index.cgi index.php

文件的順序應(yīng)該按照重要性從高到低進(jìn)行排列。如果不存在HTML或CGI文件,那么將回退到index.php。你甚至可以將這些文件命名為home.phpsomeotherfile.php,它們都是有效的語法。

強(qiáng)制WWW或非WWW子域

如果你未指定www.domain.com或僅指定domain.com,?Google可以使用你網(wǎng)站域的兩個(gè)版本。根據(jù)我的經(jīng)驗(yàn),最好選擇其中一種,并通過.htaccess?將其設(shè)置為唯一的選擇。然后谷歌才會(huì)只收錄一個(gè)域名下的內(nèi)容,不會(huì)導(dǎo)致兩個(gè)版本的情況出現(xiàn)。

# 強(qiáng)制到 www 子域名
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
 
# 強(qiáng)制到根域名
RewriteEngine On
RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]

此代碼段來自CSS-Tricks,提供了非常方便的解決方案。你應(yīng)該將域名更改為自己網(wǎng)站的,否則會(huì)有問題!但我非常支持強(qiáng)制執(zhí)行這兩個(gè)選項(xiàng)中的一個(gè),并且在啟動(dòng)新網(wǎng)站后就需要設(shè)置好。

強(qiáng)制下載媒體文件

另一個(gè)相當(dāng)重要的片段允許強(qiáng)制下載某些媒體類型而不是在瀏覽器中顯示。我們都知道PDF文檔和MP3音頻文件應(yīng)該是可以被下載的,但是如何確保它們可以下載?我在Htaccess指南上發(fā)現(xiàn)了一篇類似的文章,其中概述了這段代碼。

AddType application/octet-stream .zip .mp3 .mp4

你可以在此行的末尾添加更多文件類型。使用八位字節(jié)流MIME類型的所有媒體格式都是可下載的。通過.htaccess強(qiáng)制執(zhí)行此操作是確保人們無法在瀏覽器中查看這些文件的直接路徑。

自定義錯(cuò)誤文檔

我要添加的最后一篇文章是自定義錯(cuò)誤文檔的完整模板。通常這些數(shù)字代碼只能在服務(wù)器端看到。但是有很多這些錯(cuò)誤文檔你應(yīng)該熟悉。比如403/404錯(cuò)誤301重定向

此錯(cuò)誤代碼模板從100開始,一直到500錯(cuò)誤。請注意,你不需要完全去用完這些,只需要去設(shè)置一些你認(rèn)為比較常用的即可。

如果你不認(rèn)識(shí)代碼,可以在維基百科上查找以獲得更好的理解。

ErrorDocument 100 /100_CONTINUE
ErrorDocument 101 /101_SWITCHING_PROTOCOLS
ErrorDocument 102 /102_PROCESSING
ErrorDocument 200 /200_OK
ErrorDocument 201 /201_CREATED
ErrorDocument 202 /202_ACCEPTED
ErrorDocument 203 /203_NON_AUTHORITATIVE
ErrorDocument 204 /204_NO_CONTENT
ErrorDocument 205 /205_RESET_CONTENT
ErrorDocument 206 /206_PARTIAL_CONTENT
ErrorDocument 207 /207_MULTI_STATUS
ErrorDocument 300 /300_MULTIPLE_CHOICES
ErrorDocument 301 /301_MOVED_PERMANENTLY
ErrorDocument 302 /302_MOVED_TEMPORARILY
ErrorDocument 303 /303_SEE_OTHER
ErrorDocument 304 /304_NOT_MODIFIED
ErrorDocument 305 /305_USE_PROXY
ErrorDocument 307 /307_TEMPORARY_REDIRECT
ErrorDocument 400 /400_BAD_REQUEST
ErrorDocument 401 /401_UNAUTHORIZED
ErrorDocument 402 /402_PAYMENT_REQUIRED
ErrorDocument 403 /403_FORBIDDEN
ErrorDocument 404 /404_NOT_FOUND
  
ErrorDocument 405 /405_METHOD_NOT_ALLOWED
ErrorDocument 406 /406_NOT_ACCEPTABLE
ErrorDocument 407 /407_PROXY_AUTHENTICATION_REQUIRED
ErrorDocument 408 /408_REQUEST_TIME_OUT
ErrorDocument 409 /409_CONFLICT
ErrorDocument 410 /410_GONE
ErrorDocument 411 /411_LENGTH_REQUIRED
ErrorDocument 412 /412_PRECONDITION_FAILED
ErrorDocument 413 /413_REQUEST_ENTITY_TOO_LARGE
ErrorDocument 414 /414_REQUEST_URI_TOO_LARGE
ErrorDocument 415 /415_UNSUPPORTED_MEDIA_TYPE
ErrorDocument 416 /416_RANGE_NOT_SATISFIABLE
ErrorDocument 417 /417_EXPECTATION_FAILED
ErrorDocument 422 /422_UNPROCESSABLE_ENTITY
ErrorDocument 423 /423_LOCKED
ErrorDocument 424 /424_FAILED_DEPENDENCY
ErrorDocument 426 /426_UPGRADE_REQUIRED
ErrorDocument 500 /500_INTERNAL_SERVER_ERROR
ErrorDocument 501 /501_NOT_IMPLEMENTED
ErrorDocument 502 /502_BAD_GATEWAY
ErrorDocument 503 /503_SERVICE_UNAVAILABLE
ErrorDocument 504 /504_GATEWAY_TIME_OUT
ErrorDocument 505 /505_VERSION_NOT_SUPPORTED
ErrorDocument 506 /506_VARIANT_ALSO_VARIES
ErrorDocument 507 /507_INSUFFICIENT_STORAGE
ErrorDocument 510 /510_NOT_EXTENDED

在線.htaccess工具

其他有用的資源

最后的想法

網(wǎng)絡(luò)上有很多討論.htaccess文件的文章,我文章中提到的文章和工具,都是入門的好資源。但是,如果你想繼續(xù)練習(xí)新的想法,不要害怕測試代碼片段。只要你有一個(gè)備份文件,那么你可以測試你喜歡的任何東西,這是一個(gè)有趣的學(xué)習(xí)體驗(yàn)。

原文出自: https://www.hongkiat.com/blog/guide-to-htaccess/ ,由WordPress大學(xué)翻譯整理。

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
歡迎關(guān)注WordPress大學(xué)公眾號(hào) WPDAXUE
網(wǎng)站維護(hù)

15個(gè)有用的WordPress .htaccess 代碼片段

2019-9-2 21:48:36

網(wǎng)站維護(hù)

WordPress上傳圖片時(shí)遇到HTTP錯(cuò)誤的解決辦法

2019-10-13 8:35:10

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索

开阳县| 通江县| 安丘市| 承德县| 东丰县| 通海县| 抚远县| 平果县| 新河县| 秦皇岛市| 商丘市| 黔西| 巴南区| 澄城县| 吴旗县| 察哈| 西和县| 吐鲁番市| 永靖县| 淮阳县| 历史| 广宁县| 通城县| 太仆寺旗| 丰原市| 弥勒县| 南雄市| 汝阳县| 双辽市| 丹凤县| 漯河市| 泗洪县| 手游| 德钦县| 六安市| 昌黎县| 贵定县| 岗巴县| 简阳市| 七台河市| 太白县|