立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 6547|回复: 0

[Wordpress 通用教程] 网站管理员和Web开发人员.htaccess入门指南文档

[复制链接]
发表于 2020-1-15 20:15:34 | 显示全部楼层 |阅读模式
道勤网-数据www.daoqin.net

亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在很多自定义Web服务器的工具中,.htaccess配置文件是一个非常实用的工具。你可以快速重置文档类型、解析引擎、URL重定向以具体用法。在本文中,我想为网站管理员和Web开发人员提供一些更有目的性的概念。 .htaccess 提供了非常多的可定制性,它可以在从PHP到Ruby的任何Web语言中使用。 任何在Apache服务器上搭建自己网站的人肯定想了解如何管理他们的.htaccess文件。
在这篇文章的底部,我添加了一些外部Web应用程序来帮助新手动态生成.htaccess文件。
为什么要使用.htaccess文件?
这是一个很好的问题,也许我们应该首先回答“什么是.htaccess文件”?它是Apache Web服务器使用的一个非常特殊的配置文件。.htaccess文件可以告诉Web服务器如何呈现各种形式的信息以及如何处理各种HTTP请求标头。
真的,这是一种分散 Web服务器设置的方法。一个物理服务器可以拥有50个不同的网站,每个网站都有自己的.htaccess文件。它为网站管理员提供了很多权力,否则这是不可能的。但是你为什么要用一个呢?
最大的原因是安全。您可以锁定某些目录或使其受密码保护。这非常适合私人项目或新的内容管理系统,您需要一些额外的安全性。但是也有一些常见的任务,例如将404错误消息重定向到某个网页。这只需要一行代码,它可以极大地影响访问者对404页面的反应。
说实话,我没有太多理由去说服别人.htaccess文件值得去理解和应用。一旦你看到它在行动,你就可以知道来自这个微小的配置文件的所有价值。此外,我希望本文的其余部分可以提供一些有见地的话题,让网站管理员了解如何管理.htaccess配置。
允许/拒绝访问
可以识别潜在的垃圾访问者并拒绝他们访问您的网站。这可能有点极端,但是如果你知道一个人或一群人一直在瞄准你的网站,你可以通过IP地址选择域引用来拒绝或禁止访问者。
  1. order allow,deny
  2. deny from 255.0.0.0
  3. deny from 123.45.6.
  4. allow from all
复制代码
这些示例代码是从Htaccess指南中复制的,因为它们是入门的完美模板。请注意,第二个IP地址缺少第4个整数。此代码块将以第一个IP(255.0.0.0)和123.45.6.0-255范围内的每个IP为目标,然后允许所有其他流量。网站管理员可能不会像其他技术那样经常使用它,但它有助于理解。
阻止目录列表
有时你有一个打开的目录,默认情况下设置为允许浏览。这意味着用户可以查看内部目录结构中列出的所有文件,例如images文件夹。一些网站管理员不希望允许目录列表,下面的代码片段就可以实现。
  1. Options -Indexes
复制代码
我已经看到这个答案在Stack Overflow中 出现了数次,它可能是最容易记住的.htaccess规则之一。
实际上可以在每个目录中创建多个.htaccess文件,因此可能其中一个受密码保护,但其他文件不受密码保护。你仍然可以保留Options -Indexes,以便访问者无法浏览你的网站/图像/文件夹。
密码保护目录
密码保护目录是保护管理区域和对您的网站至关重要的其他文件夹的一种非常常见的过程。你可以用来设置极少数人可以访问这些目录,或者用来防止黑客访问你的网站管理面板。但无论哪种用途,它都是解决许多问题的非常强大的解决方案。
这里有一篇密码保护指南,介绍了重要的代码片段。你需要生成一个存储用户名/密码凭据的密码文件。以便Apache检查用户输入的内容,看看是否应该授予他们访问权限。请注意查看如何生成用户名和密码的示例。
我建议使用这个htpassword生成器,可以节省一些时间。它的语法总是很完美,你不需要自己加密密码。另一个很好的选择是密码保护整个目录列表:
  1. AuthType Basic
  2. AuthName "This Area is Password Protected"
  3. AuthUserFile /full/path/to/.htpasswd
  4. Require valid-user
复制代码
wordpress安全
为了充分利用这个密码保护的想法,让我们展示一个真实的例子。这个更复杂的代码片段将强制用户身份验证访问WordPress wp-login.php文件的任何人。你可以在Ask Apache上找到原始源代码,其中包含许多其他的WordPress保护代码
  1. <Files wp-login.php>
  2. Order Deny,Allow
  3. Deny from All
  4. Satisfy Any
  5. AuthName "Protected By AskApache"
  6. AuthUserFile /web/askapache.com/.htpasswda1
  7. AuthType Basic
  8. Require valid-user
  9. </Files>
复制代码
如果你要遵循这些.htaccess规则,它也可能有助于密码保护管理区域。通常,wp-login.php是攻击者最频繁访问的文件。所以,上面的示例代码也足以为你的WordPress网站增加安全性。
推荐阅读《15个有用的WordPress .htaccess 代码片段》
HTTP URL重写规则
重写URL可能是.htaccess文件最常用的一种功能。WordPress默认安装实际上可以直接从管理面板生成.htaccess文件。这样你就可以设置非 .php?p=1 结构的漂亮链接。
让我们看一下如何将下划线更改为破折号的重写示例,因为它包含许多最重要的元素。
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.   
  5. RewriteRule !\.(html|php)$ - [S=4]
  6. RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes]
  7. RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes]
  8. RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes]
  9. RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes]
  10.   
  11. RewriteCond %{ENV:uscor} ^Yes$
  12. RewriteRule (.*) http://d.com/$1 [R=301,L]
复制代码
RewriteEngine和RewriteBase通常都是默认这样设置。你需要开启RewriteEngine,才能正常工作。网上有很多指南解释如何启用mod_rewrite,您的托管服务提供商也可以提供帮助。
请注意,语法遵循顶部的RewriteRules模式。这些规则用于匹配作为HTTP请求重写的情况。RewriteRule会在符合情况的时候,将所有内容重定向到域名d.com。而  [R=301,L] 这样的结束括号称为重写标志,这些标志很重要,要讨论这个就非常复杂了,在此不展开了。
mod_rewrite语法肯定有点令人困惑,但不要被吓倒!在其他示例中,片段看起来容易得多。
刚开始时,我推荐使用这个mod_rewrite生成器,它可以帮助你使用真实的URL来生成代码示例。这是一个很棒的工具,因为你可以在语法中查找各种项目,以查看它们在重写规则中的实际操作。
  1. RewriteRule ^dir/([0-9]+)/?$ /index.php?id=$1 [L]
复制代码
不要试图一次性就能掌握这些规则。我花了3-4个多月才真正开始了解如何使用 [0-9a-zA-Z]+  和类似模式重写URL。继续练习,我保证你会有所收获的!
网站管理员的代码片段
我喜欢易于使用的片段,我想为网站管理员整理这些相关的.htaccess代码。这些想法中的每一个都可以很好地应用在你自己的.htaccess文件以及其他代码块。这些代码片段中的大多数都非常适合解决Web服务器环境中的某些问题。
设置DirectoryIndex
DirectoryIndex 命令通常用在第一行。用来告诉Apache哪些文档最初应被视为“主”文档。默认情况下,应该使用诸如index.html、index.php、index.asp和其他索引文件之类的项目。通过使用我在下面复制的代码片段,你可以将此根文档制作成你喜欢的任何内容。
  1. DirectoryIndex index.html index.cgi index.php
复制代码
文件的顺序应该按照重要性从高到低进行排列。如果不存在HTML或CGI文件,那么将回退到index.php。你甚至可以将这些文件命名为home.php或someotherfile.php,它们都是有效的语法。
强制WWW或非WWW子域
如果你未指定www.domain.com或仅指定domain.com, Google可以使用你网站域的两个版本。根据我的经验,最好选择其中一种,并通过.htaccess 将其设置为唯一的选择。然后谷歌才会只收录一个域名下的内容,不会导致两个版本的情况出现。
  1. # 强制到 www 子域名
  2. RewriteEngine On
  3. RewriteCond %{HTTP_HOST} ^domain.com [NC]
  4. RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]

  5. # 强制到根域名
  6. RewriteEngine On
  7. RewriteCond %{HTTP_HOST} !^domain.com$ [NC]
  8. RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
复制代码
此代码段来自CSS-Tricks,提供了非常方便的解决方案。你应该将域名更改为自己网站的,否则会有问题!但我非常支持强制执行这两个选项中的一个,并且在启动新网站后就需要设置好。
强制下载媒体文件
另一个相当重要的片段允许强制下载某些媒体类型而不是在浏览器中显示。我们都知道PDF文档和MP3音频文件应该是可以被下载的,但是如何确保它们可以下载?我在Htaccess指南上发现了一篇类似的文章,其中概述了这段代码。
  1. AddType application/octet-stream .zip .mp3 .mp4
复制代码
你可以在此行的末尾添加更多文件类型。使用八位字节流MIME类型的所有媒体格式都是可下载的。通过.htaccess强制执行此操作是确保人们无法在浏览器中查看这些文件的直接路径。
自定义错误文档
我要添加的最后一篇文章是自定义错误文档的完整模板。通常这些数字代码只能在服务器端看到。但是有很多这些错误文档你应该熟悉。比如403/404错误和301重定向。
此错误代码模板从100开始,一直到500错误。请注意,你不需要完全去用完这些,只需要去设置一些你认为比较常用的即可。
如果你不认识代码,可以在维基百科上查找以获得更好的理解。
  1. ErrorDocument 100 /100_CONTINUE
  2. ErrorDocument 101 /101_SWITCHING_PROTOCOLS
  3. ErrorDocument 102 /102_PROCESSING
  4. ErrorDocument 200 /200_OK
  5. ErrorDocument 201 /201_CREATED
  6. ErrorDocument 202 /202_ACCEPTED
  7. ErrorDocument 203 /203_NON_AUTHORITATIVE
  8. ErrorDocument 204 /204_NO_CONTENT
  9. ErrorDocument 205 /205_RESET_CONTENT
  10. ErrorDocument 206 /206_PARTIAL_CONTENT
  11. ErrorDocument 207 /207_MULTI_STATUS
  12. ErrorDocument 300 /300_MULTIPLE_CHOICES
  13. ErrorDocument 301 /301_MOVED_PERMANENTLY
  14. ErrorDocument 302 /302_MOVED_TEMPORARILY
  15. ErrorDocument 303 /303_SEE_OTHER
  16. ErrorDocument 304 /304_NOT_MODIFIED
  17. ErrorDocument 305 /305_USE_PROXY
  18. ErrorDocument 307 /307_TEMPORARY_REDIRECT
  19. ErrorDocument 400 /400_BAD_REQUEST
  20. ErrorDocument 401 /401_UNAUTHORIZED
  21. ErrorDocument 402 /402_PAYMENT_REQUIRED
  22. ErrorDocument 403 /403_FORBIDDEN
  23. ErrorDocument 404 /404_NOT_FOUND
  24.   
  25. ErrorDocument 405 /405_METHOD_NOT_ALLOWED
  26. ErrorDocument 406 /406_NOT_ACCEPTABLE
  27. ErrorDocument 407 /407_PROXY_AUTHENTICATION_REQUIRED
  28. ErrorDocument 408 /408_REQUEST_TIME_OUT
  29. ErrorDocument 409 /409_CONFLICT
  30. ErrorDocument 410 /410_GONE
  31. ErrorDocument 411 /411_LENGTH_REQUIRED
  32. ErrorDocument 412 /412_PRECONDITION_FAILED
  33. ErrorDocument 413 /413_REQUEST_ENTITY_TOO_LARGE
  34. ErrorDocument 414 /414_REQUEST_URI_TOO_LARGE
  35. ErrorDocument 415 /415_UNSUPPORTED_MEDIA_TYPE
  36. ErrorDocument 416 /416_RANGE_NOT_SATISFIABLE
  37. ErrorDocument 417 /417_EXPECTATION_FAILED
  38. ErrorDocument 422 /422_UNPROCESSABLE_ENTITY
  39. ErrorDocument 423 /423_LOCKED
  40. ErrorDocument 424 /424_FAILED_DEPENDENCY
  41. ErrorDocument 426 /426_UPGRADE_REQUIRED
  42. ErrorDocument 500 /500_INTERNAL_SERVER_ERROR
  43. ErrorDocument 501 /501_NOT_IMPLEMENTED
  44. ErrorDocument 502 /502_BAD_GATEWAY
  45. ErrorDocument 503 /503_SERVICE_UNAVAILABLE
  46. ErrorDocument 504 /504_GATEWAY_TIME_OUT
  47. ErrorDocument 505 /505_VERSION_NOT_SUPPORTED
  48. ErrorDocument 506 /506_VARIANT_ALSO_VARIES
  49. ErrorDocument 507 /507_INSUFFICIENT_STORAGE
  50. ErrorDocument 510 /510_NOT_EXTENDED
复制代码
在线.htaccess工具
  • Htaccess Builder
  • .htaccess重定向生成器
  • .htaccessEditor - 创建.htaccess文件
  • GenerateIt.net的Mod Rewrite Generator
其他有用的资源
  • Httpd Wiki中的.htaccess
  • 官方Apache htaccess文档
  • Ask Apache Blog - Htaccess Archives
  • htaccess和mod_rewrite的终极指南
  • 你想知道但又不敢问的关于Mod_Rewrite规则的一切
最后的想法
网络上有很多讨论.htaccess文件的文章,我文章中提到的文章和工具,都是入门的好资源。但是,如果你想继续练习新的想法,不要害怕测试代码片段。只要你有一个备份文件,那么你可以测试你喜欢的任何东西,这是一个有趣的学习体验。

道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题! 如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服! 如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

道勤网- 推荐内容!上一条 /2 下一条

!jz_fbzt! !jz_sgzt! !jz_xgzt! 快速回复 !jz_fhlb! !jz_lxwm! !jz_gfqqq!

关于我们|手机版|小黑屋|地图|【道勤网】-www.daoqin.net 软件视频自学教程|免费教程|自学电脑|3D教程|平面教程|影视动画教程|办公教程|机械设计教程|网站设计教程 ( 皖ICP备15000319号-1 )

GMT+8, 2024-12-28 01:59

Powered by DaoQin! X3.4 © 2016-2063 Dao Qin & 道勤科技

快速回复 返回顶部 返回列表