如果你是一个网站所有者,你可能已经知道一点关于**.htaccess文件,或者至少知道它们的存在。在本教程中,我们将帮助你了解.htaccess文件的目的。我们还将讨论你如何为你的WordPress网站访问和配置.htaccess**文件。
.htaccess文件有什么作用?
.htaccess文件被Apache网站服务器用来决定它应该如何向访问者提供文件。你可以用这个文件为不同的目录提供不同的配置选项。你在一个特定目录内的**.htaccess**文件中设置的选项将适用于该目录内的所有文件和子目录。
你可以使用**.htaccess**文件做很多事情,如重写URL,将用户从你的网页的非安全版本重定向到安全版本,或控制高速缓存。
我的WordPress**.htaccess**文件位于哪里?
通常情况下,文件名包含实际的基本名称和扩展名,如contacts.pdf和log.txt。然而,.htaccess文件没有扩展名。它以一个点开始,因为这使它在Unix和Linux操作系统中被隐藏。该文件位于你的WordPress安装的根目录中。
然而,你一开始可能看不到它,因为你的FTP客户端可能隐藏了它。如果你在你的WordPress根目录下没有看到**.htaccess**文件,在你的FTP客户端寻找一个显示隐藏文件的选项。



之后,你应该看到像上图这样的文件。与普通文件相比,文件名的颜色可能仍然较浅。如果你仍然没有看到一个**.htaccess**文件,请看下面的一些故障排除技巧。
WordPress是如何使用**.htaccess**文件的?
核心的WordPress本身使用**.htaccess文件来重定向URL,以使其可读性以及SEO和用户友好。该文件位于你的WordPress网站的根目录中。这是你第一次安装WordPress的位置。它还将包含另一个名为index.php的文件,与.htaccess**文件在同一目录中。
如果你登录到WordPress管理仪表板,然后进入设置>路径链接,你会看到WordPress允许你选择一种格式来创建你发布的任何文章的URL。URL可以包含月、日、帖子类别和帖子名称等的组合。
选择这些设置之一并点击保存更改按钮将促使WordPress用一些URL重写条件更新**.htaccess文件。然后你的.htaccess**文件将有一些URL重写规则,看起来与下面列出的规则相似。
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
你自己的**.htaccess文件可能包含更多的规则,这取决于你的网站上安装的插件。例如,你所安装的任何安全插件可以在文件中添加规则,以防止来自某些IP地址的访问,或只允许来自白名单的IP地址的访问。安全插件可以在.htaccess**文件内做更多事情,如防止垃圾邮件机器人评论和图片热链接。
下图显示了All In One WP Security插件在**.htaccess**文件中编写的一些规则。



你还会发现一些与缓存不同类型文件有关的额外规则。如果你安装了任何处理缓存的WordPress优化插件,这些可能被设置。这里有一张图片,上面有一些关于不同类型文件的缓存到期日的规则。这些是由一个缓存插件添加的。



寻找和更新**.htaccess**文件的问题
.htaccess文件应该与Apache网络服务器一起工作。这意味着你不会在其他服务器(如Nginx)上找到可以工作的.htaccess文件。如果你在你的根目录下找了一圈,仍然没有看到**.htaccess**文件,请向你的虚拟主机确认你是运行在Apache还是其他技术。
WordPress也需要有适当的权限,以便阅读和修改一个**.htaccess**文件。如果WordPress在默认情况下没有工作,你将需要改变文件权限,让它有能力更新文件。
了解**.htaccess**文件的基础知识
你在网站上安装的任何安全和缓存插件,通常会比在你的**.htaccess文件中简单地写上一堆行。然而,对一些常见的命令有一个基本的了解,将使你在需要时修改.htaccess**文件时更加自如。这也可以帮助你避免安装任何插件来完成简单的任务,如将用户重定向到安全页面或从一个不存在的旧网址到一个新网址。
在你开始对其进行任何修改之前,对你的原始**.htaccess**文件进行备份总是很重要。这是因为在改变文件时,任何错误都可能使你的网站瘫痪或出现意外情况。有一份原始文件的副本,将使你能够通过简单地用原始版本替换更改后的文件,使网站正常运行。
你可以写下你的规则以及评论,以向他人提供指示或解释你为什么写这些规则。.htaccess文件中的任何评论必须以# 作为第一个字符。我们将告诉你如何通过直接编辑**.htaccess**文件而不是安装插件来完成一些基本任务。
重定向旧网址
假设你在一些不再存在的旧网址上有一个受欢迎的帖子。这可能是一些相关的东西,如你不再销售的产品的一个旧版本等。在这种情况下,你可能想把访问旧网址的人重定向到你的新网页上。
你可以在你的**.htaccess**文件中添加以下一行来做到这一点。记住要用你的实际URL值替换路径。
Redirect 301 /some-old-post-url/ /new-post-url/
你也可以通过使用同样的命令将你的整个网站重定向到一个新的URL。在我的例子中,WordPress的安装是在一个名为wordpress的目录中。所以,我可以在我的**.htaccess**文件里面添加以下一行,把它重定向到别的地方。
Redirect 301 /wordpress/ https://code.tutsplus.com/
在你添加上述行后,访问**/wordpress/some-post/的人将被重定向到code.tutsplus.com/some-post/*…*
缓存常见的文件类型
你网站的普通访问者会反复请求相同的CSS、JavaScript和图片文件。因此,让他们从缓存中获取这些文件而不是常规的传输是有意义的。你可以用一个**.htaccess**文件添加基本的缓存功能。下面是一个缓存这些文件的例子。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css A604800
ExpiresByType text/javascript A1296000
ExpiresByType application/javascript A1296000
ExpiresByType application/x-javascript A1296000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
</IfModule>
A后面的数字设置了文件被缓存的总秒数。还有一种设置缓存时间的方法,将时间段指定为人类可读的数值。
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 15 days"
ExpiresByType application/javascript "access plus 15 days"
ExpiresByType application/x-javascript "access plus 15 days"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
</IfModule>
现在你应该能够为缓存插件没有涵盖的文件类型指定缓存指令。
将用户重定向到安全页面
htaccess文件的另一个用途是将用户从HTTP页面重定向到相应的HTTPS页面。你可以使用以下规则来做到这一点。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
标志R和L可以是任何顺序的。R标志告诉服务器发送一个指定的响应代码,L标志告诉服务器停止处理这套规则中的任何其他规则。
最后的思考
这篇文章开始时,我们简要解释了**.htaccess文件的目的。之后,我们了解了在WordPress中哪里可以找到这些文件,以及WordPress和其他插件如何使用它来做诸如缓存资源和提高安全性的事情。最后,我们讨论了一些常见的规则和命令,你会发现在你自己的.htaccess**文件中,以及如何添加它们,如果它们还不存在。