您的WordPress站点的.htaccess文件是Web服务器Apache使用的基本配置文件。但很多服务器使用的Web服务器是Nginx而不是Apache,您实际上不会拥有.htaccess文件。
但是,如果您在其他地方托管站点,了解.htaccess文件很重要,这也是您经常在WordPress教程中看到的主题。
在本文中,您将详细了解WordPress站点.htacces 文件是什么以及它可以让您做什么。
什么是WordPress站点.htaccess文件?
.htaccess文件是Web服务器Apache使用的基本配置文件,可让您创建告诉Web服务器如何运行的特殊规则。它位于根文件夹中。
默认情况下,您的WordPress站点使用.htaccess文件来控制站点的永久链接结构,但许多插件也将.htaccess文件用于其他目的,例如:
- 添加特殊规则以更有效地提供缓存内容。
- 设置自动重定向
- 将HTTP重定向到HTTPS
- 基于IP地址禁止/限制访问
- 增加最大上传大小
什么是.htaccess?更详细的解释
回顾一下,.htaccess是Web服务器Apache使用的配置文件,它是大多数预算共享主机使用的Web服务器。作为一个基本的配置文件,它允许您创建特殊的规则来告诉您的Web服务器如何运行。
默认情况下,您的WordPress站点使用.htaccess文件来控制站点的固定链接结构。许多WordPress插件也使用.htaccess文件。例如,如果您有一个缓存插件,它可能会向您的.htaccess文件添加自己的特殊规则,以更有效地提供缓存内容。
除此之外,您还可以将自己的代码片段添加到您网站的 .htaccess 文件中,这样您就可以执行以下操作:
-
- 重定向– 您可以在临时(如307)或永久的基础上设置自动重定向。例如,如果您更改网站的URL,您需要设置301重定向以确保不会损害您的流量或SEO。或者,如果您最近安装了SSL证书,则可以将HTTP重定向到HTTPS。
- 安全性– 您可以限制访问您的全部或部分站点以提高WordPress安全性。例如,您可以将其设置为只有某些列入白名单的IP地址(例如您的IP地址)才能访问您站点的管理区域。或者,您也可以禁止整个站点中的特定IP地址。
- 其他配置调整– 您可以调整服务器的运行方式。例如,您可以增加最大上传大小来修复“uploaded file exceeds the upload_max_filesize directive in php.ini”错误。
如何在WordPress中找到.htaccess文件
如果您使用的Web服务器是Apache,则可以通过FTP或cPanel文件管理器连接到站点的服务器来定位和编辑站点的.htaccess文件。
连接到服务器并能够浏览站点文件后,您可以在站点的根文件夹中找到WordPress站点的.htaccess文件,该文件夹与包含wp-config.php文件和wp-admin和wp-content文件夹:
WordPress站点的.htaccess文件所在的位置
默认情况下,您的站点将只有一个.htaccess文件——位于根文件夹中的文件。
但是,可以在单独的目录中使用多个.htaccess文件,尽管WordPress在其默认状态下不会这样做。
.htaccess文件适用于它所在的目录以及所有子目录,因此您可以将.htaccess文件添加到子目录以添加仅适用于该目录(及其任何子目录)的规则目录)。然而,通常只使用一个.htaccess文件并将所有规则保留在那里更简单。
WordPress站点.htaccess文件示例
默认情况下,您的WordPress站点的.htaccess文件仅包含一个控制站点固定链接功能的规则。这是它应该是什么样子的示例:
WordPress站点默认.htaccess文件的示例
如何将您自己的规则添加到.htaccess
确保在进行任何编辑之前备份您网站的.htaccess文件,因为即使是一个小错误也可能使您的WordPress网站无法访问。
要添加您自己的.htaccess 规则,您需要在现有WordPress站点.htaccess规则的上方或下方添加相关代码片段。
我们将分享一些您可以做什么的示例,但免费的 .htaccess生成器站点提供了一个非常方便的工具来生成执行各种不同操作所需的代码片段。
将所有流量重定向到您网站的HTTPS版本
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
阻止IP地址
order allow,deny
deny from 192.168.1.1
allow from
//Block users by IP order allow,deny deny from 192.168.1.1 allow from
添加密码以访问您网站的一部分
<Files /wp-admin>
AuthName “Prompt”
AuthType Basic
AuthUserFile /wp-admin
Require valid-user
</Files>
//Password Protect file <Files /wp-admin> AuthName "Prompt" AuthType Basic AuthUserFile /wp-admin Require valid-user </Files>
您还需要添加一个单独的.htpasswd
文件。
这是添加一些自己的规则后 .htaccess 文件的外观示例……
带有自定义规则的WordPress站点.htaccess文件示例
不使用.htaccess站点服务器:您如何进行更改?
正如我们在上面告诉您的,闪电博网站使用Web服务器是Nginx,而不是Apache。这类Web服务器意味着任何WordPress网站都没有可用的.htaccess文件。
然而,这并不意味着您在重定向、安全规则等方面仍然不能执行类似的操作。 .htaccess文件中的设置和规则可以轻松地“转换”为Nginx自己的重写规则语法。
使用Nginx服务器,同样可以拥有许多重要的 .htaccess 功能。对于其他规则,Nginx还提供了自己的配置文件,您可以在其中类似地设置规则,尽管语法不同。
设置重定向
比如Nginx服务器HTTP流量重定向至HTTPS的规则如下:
listen 80;
server_name domain.com www.domain.com;
return 301 https://domain.com$request_uri; }
server { listen 80; server_name domain.com www.domain.com; return 301 https://domain.com$request_uri; }
阻止特定IP地址
要阻止特定IP地址或者IP段访问您的站点,您在站点Nginx配置文件添加以下规则:
allow 192.168.0.1;
###拒绝某个ip访问
deny 192.168.0.2;
###拒绝123.0.0.1~123.255.255.254这个段的ip
deny 123.0.0.0/8;
###拒绝123.1.0.1~123.1.255.254这个段的ip
deny 123.1.0.0/16;
###拒绝123.1.1.1~123.1.1.254这个段的ip
deny 123.1.1.0/24;
###allow跟deny配置相同,如果需要开放某个IP段,只需要把上面的deny改成allow
###允许某个ip访问 allow 192.168.0.1; ###拒绝某个ip访问 deny 192.168.0.2; ###拒绝123.0.0.1~123.255.255.254这个段的ip deny 123.0.0.0/8; ###拒绝123.1.0.1~123.1.255.254这个段的ip deny 123.1.0.0/16; ###拒绝123.1.1.1~123.1.1.254这个段的ip deny 123.1.1.0/24; ###allow跟deny配置相同,如果需要开放某个IP段,只需要把上面的deny改成allow
密码保护您的网站
要锁定整个站点,通过Nginx的配置规则来实现:
htpasswd是Apache密码生成工具,Nginx支持auth_basic认证,因此我门可以将生成的密码用于Nginx中,输入一行命令即可安装:yum -y install httpd-tools
,参数如下:
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容. -n 不更新passwordfile,直接显示密码 -m 使用MD5加密(默认) -d 使用CRYPT加密(默认) -p 使用普通文本格式的密码 -s 使用SHA加密 -b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互 -D 删除指定的用户
生成密码
cd /home
#生成密码
htpasswd -c ./passwd username
#执行上命令后会要求输入两次密码,./passwd 是在当前目录下创建密码文件passwd ,username即为需要设置的账号
#进入home目录 cd /home #生成密码 htpasswd -c ./passwd username #执行上命令后会要求输入两次密码,./passwd 是在当前目录下创建密码文件passwd ,username即为需要设置的账号
如果你不想安装htpasswd,也可以通过在线htpasswd生成器来完成。
载入配置
接下来在Nginx配置文件中(通常是server段内),加入如下两行,并重载Nginx(service nginx reload
)即可生效。
auth_basic_user_file /home/passwd;
auth_basic "Please input password"; #这里是验证时的提示信息 auth_basic_user_file /home/passwd;
问题解决
如果开启auth_basic
认证后出现500错误,注意:
- passwd改成nginx对应用户权限,比如您nginx配置的www用户来运行:
chown www:www /home/passwd
- 不要放到
/root
之类得目录下,请尝试移动到其它公共目录
访问测试
再访问站点,提示需要输入用户名和密码才可以访问,此方法适合不宜公开的站点,比如PHPmyadmin,这样可避免被弱口令扫描,无疑再上了一把锁。
小结
WordPress站点的.htaccess文件是Web服务器Apache使用的基本配置文件。虽然您可以将其用于各种用途,但WordPress用户想要使用的最常见功能是:
- 重定向
- IP地址黑名单/白名单
- 密码保护文件夹
- 等等。
现在大部分自建的服务器使用较新的Web服务器Nginx而不是Apache,这些Web服务器上的WordPress站点没有.htaccess 文件。相反,当然Nginx也可以添加重定向和IP禁止规则,Nginx的配置文件相当于Apache的.htaccess文件。