.htaccess 教程
在本教程中,您将了解 .htaccess 文件及其强大功能,帮助您优化和管理网站。Bluehost 支持 .htaccess 文件;但作为客户,您需要对该文件的内容及其对网站的影响负责。
- 创建 .htaccess 文件
- 编辑 .htaccess 文件
- 替代索引文件
- 自定义错误页面
- 禁止目录索引显示
- 拒绝/允许特定 IP 地址
- 重定向
- 密码保护
- 修复 ExecCGI
- 重启 Apache
创建 .htaccess 文件
您可以在本地计算机或服务器上创建 .htaccess 文件。
在您的计算机上
Windows: 使用记事本,将文件保存为 .htaccess。Mac OS X: 使用 TextEdit,将文件保存为“.htaccess”。
注意: 如果您将文件保存为 .htaccess,文件将被隐藏,您无法在 Finder 中看到它。
使用您喜欢的 FTP 客户端,将文件上传到服务器。 .htaccess 文件需要放在您的网站所在的文件夹中,通常是 public_html 文件夹。有关详细信息,请参阅文件管理器 - 如何上传文件。
在服务器上
- 登录您的 Bluehost 账户管理面板。
注意: 您必须将“example.com”替换为您的实际域名。
- 接着,点击 文件管理器 按钮,位于 文件 下方。

- 寻找屏幕右上角的 设置 按钮。

- 点击 首选项 弹出窗口,然后勾选 显示隐藏文件(点文件)。

- 完成后点击 保存 按钮。
- 点击 文件 图标创建新文件,命名为 .htaccess。

编辑 .htaccess 文件
您可能因各种原因需要编辑 .htaccess 文件。本文介绍如何编辑该文件,但不涉及具体修改内容。(您可能需要查阅其他文章和资源以获取相关信息。)
编辑 .htaccess 文件的方法有多种:
- 在计算机上编辑文件,然后通过 FTP 上传到服务器。
- 使用 FTP 程序的 编辑模式,远程编辑文件。
- 使用 SSH 和文本编辑器编辑文件。
- 使用 cPanel 中的文件管理器编辑文件。
对大多数人来说,使用 cPanel 的文件管理器是编辑 .htaccess 文件最快捷、最简单的方法。本文介绍如何使用此方法编辑。请继续阅读后续章节了解一些常见的 .htaccess 编辑操作。
如何在 Bluehost cPanel 的文件管理器中编辑 .htaccess
在操作之前,建议您备份网站,以便出现问题时可以恢复到之前的版本。
编辑 .htaccess 文件,首先需要打开 文件管理器。
- 登录您的 Bluehost 控制面板。
- 点击左侧菜单中的 托管 标签。

- 接着,在 快速链接 下点击 文件管理器 按钮。

- 寻找屏幕右上角的 设置 按钮。
- 点击 首选项 弹出窗口,然后勾选 显示隐藏文件(点文件)。

- 滚动查找列表中的 .htaccess 文件。
- 右键点击该文件,然后从菜单中选择 编辑。

- 可能会弹出编码选择对话框,直接点击 编辑 按钮继续。编辑器将在新窗口打开。
- 根据需要编辑文件,然后点击 保存更改 按钮。
- 测试您的网站,确保达到预期效果。如果没有,修正错误或恢复到之前版本,直到网站正常运行。
替代索引文件
您不一定总是使用 index.htm 或 index.html 作为目录的索引文件;例如,如果您网站使用 PHP 文件,您可能希望 index.php 作为目录的索引文件。您也不局限于“index”文件,使用 .htaccess,您可以将 foofoo.blah 设置为索引文件!
替代索引文件以列表形式输入。服务器会从左到右依次检查每个文件是否存在;如果都不存在,则显示目录列表(当然,前提是您没有关闭该功能)。
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
自定义错误页面
您可以自定义个人错误页面(例如,文件未找到时),而不是使用 Bluehost 的错误页面或没有错误页面。这样您的网站看起来更专业。
只要知道错误代码(如 404 表示页面未找到),即可通过在 .htaccess 文件中添加以下内容使用自定义错误页面:
ErrorDocument errornumber /file.html
例如,如果我在网站根目录有文件 notfound.html,想用它作为 404 错误页面,可以写:
ErrorDocument 404 /notfound.html
如果错误页面不在网站根目录,可以填写文件路径:
ErrorDocument 500 /errorpages/500.html
以下是一些常见错误代码:
401 - 需要授权
400 - 错误请求
403 - 禁止访问
500 - 服务器内部错误
404 - 页面不存在
禁止目录索引显示
有时,目录中没有索引文件,这意味着如果有人在浏览器中输入目录名称,将显示该目录下所有文件的完整列表。这可能会带来安全风险。
为防止这种情况(而不必创建大量新的“index”文件),您可以在 .htaccess 文件中输入命令,阻止目录列表显示:
# 禁用目录浏览
Options ExecCGI Includes IncludesNOEXEC SymLinksIfOwnerMatch -Indexes
# 启用目录浏览
Options All +Indexes
拒绝/允许特定 IP 地址
允许只有特定 IP 地址的人访问您的网站,例如,允许使用特定网络的用户访问某个目录。您也可以禁止某些 IP 地址,例如阻止破坏性用户访问您的留言板。仅当您知道要禁止的 IP 地址时,此方法才有效。
请注意,大多数 ISP 使用动态 IP 地址,因此这并非限制/授权访问的最佳方法。
阻止 IP 地址
# 拒绝列表
order allow,deny
deny from 123.123.123.123 # 指定单个地址
deny from 123.123.123.123/30 # 指定子网范围
deny from 123.123.* # 指定 IP 地址通配符
allow from all
仅允许特定 IP 地址
# 允许列表
order deny,allow
allow from 123.123.123.123 # 指定单个地址
allow from 123.123.123.123/30 # 指定子网范围
allow from 123.123.* # 指定 IP 地址通配符
deny from all
注意: 这仍然允许脚本使用目录中的文件。
重定向
cPanel 中有工具可以帮您创建重定向。请参阅如何创建重定向。
从特定文件重定向到新文件
示例:
Redirect /redirect_from.html http://www.newsite.com/folder/redirect_to.html
上述示例中,根目录下名为 redirect_example.html 的文件被重定向到 URL http://www.newsite.com/folder/redirect_example.html。
如果旧文件在子目录中,可以使用:
/subdirectory/redirect_from.html
通配符重定向 / 从一个文件夹重定向到新文件夹
Redirect /redirect_from http://www.newsite.com/redirect_to
现在,任何对 /redirect_from 目录下内容的请求都会被重定向到新站点,并附加 URL 中的额外信息,例如,如果有人输入:
http://www.example.com/redirect_from/images/image.gif
他们将被重定向到:
http://www.newsite.com/redirect_to/images/image.gif
Joomla 中的重定向(URL 重写)
要启用 Joomla 中的 URL 重写,您需要将以下代码复制粘贴到您的 .htaccess 文件中。
# 出于安全原因,Option FollowSymlinks 不能被覆盖。
#Options +FollowSymLinks
Options +SymLinksIfOwnerMatch
Mod_Rewrite
Mod Rewrite 允许您更改访问域名或特定地址时显示的 URL。只需将代码添加到您的 .htaccess 文件(通常在 public_html 目录下)。
请记住,我们不提供代码支持,也不保证您的代码能正常工作。有些代码可以组合使用,有些则不行。
示例
# 指定默认主页(索引页)
DirectoryIndex home.html
# 只允许指定 IP 访问网站
deny from all
allow from 64.95.219.140
allow from 210.23.45.67
# 将 olddomain.com 的所有页面重定向到 newdomain.com
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^olddomain.com$
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
# 防止加载子文件夹。此规则放在主域名的 htaccess 中
RewriteCond %{HTTP_HOST} ^primary.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.primary.com$
RewriteRule ^addon.com/?(.*)$ "http://www.addon.com/$1" [R=301,L]
# 防止加载子域名。
# 此规则放在主域名的 htaccess 中
RewriteCond %{HTTP_HOST} ^subname.primary.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subname.primary.com$
RewriteRule ^(.*)$ "http://www.addon.com/$1" [R=301,L]
# 域名中永远不使用 www
# 将 'example.com' 替换为您的域名
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?example\.com)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
# 域名中始终使用 www
# 将 'example.com' 替换为您的域名
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .? http://www.%1example.com%{REQUEST_URI} [R=301,L]
# 设置默认主页目录(始终加载此子文件夹)
# 将 'folder' 替换为您的子文件夹名称
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /folder/ [R=301,L]
</IfModule>
# 重命名目录并强制访问新名称
# 将 'old' 替换为旧文件夹名
# 将 'new' 替换为新文件夹名
RewriteEngine on
RewriteRule ^/?old([a-z/.]*)$ /new$1 [R=301,L]
# 访问安全连接时始终使用 https
# 将 'www.example.com' 替换为您的域名
# (与您的 SSL 证书上的名称一致)
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# 阻止来自多个来源的流量
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} badsite.com [NC,OR]
RewriteCond %{HTTP_REFERER} badforum.com [NC,OR]
RewriteCond %{HTTP_REFERER} badsearchengine.com [NC]
RewriteRule .* - [F]
# 不允许调用这些文件类型
RewriteEngine on
RewriteRule .*.(jpg|jpeg|gif|png|bmp|exe|swf)$ - [F,NC]
dot-htaccess 编码指南:
- javascriptkit.com
- apache.org
- modrewrite.com
密码保护
.htaccess 的众多用途之一是可靠地保护网站上的密码目录。
注意: 如果您想使用 cPanel 工具为文件夹设置密码保护,请参阅我们的文章:为网站文件夹设置密码保护。
.htaccess 文件
使用 .htaccess 为目录添加密码保护分两个阶段。第一步是在您想保护的目录中的 .htaccess 文件添加相应代码。该目录及其以下所有内容都将受密码保护:
AuthName "Section Name"
AuthType Basic
AuthUserFile /home/username/.htpasswd
Require valid-user
其中有几个部分需要您根据网站情况修改。您必须将 Section Name 替换为您保护部分的名称(例如,“会员区”)。
/ home/username/.htpasswd 应替换为 .htpasswd 文件在服务器上的完整路径(稍后会详细说明)。如果您不知道网站空间的完整路径,请查看 Bluehost cPanel 左侧的“统计”栏目。
说明: 虽然示例中有时使用
.htpasswds,但通常标准文件名为.htpasswd,建议统一使用.htpasswd以避免混淆。
.htpasswd 文件
密码保护目录比其他 .htaccess 功能稍复杂,因为您还需要创建一个文件,存储允许访问的用户名和密码。该文件默认名为 .htpasswd。由于密码是加密的,该文件可以放在网站的任何位置,但建议放在网站根目录之外(如您的主目录),以防止被网络访问。
输入用户名和密码
创建好 .htpasswd 文件(可用普通文本编辑器完成)后,输入允许访问的用户名和密码,格式如下:
username:password
密码格式为加密格式。推荐使用 KxS 网站的模拟器,该模拟器允许您输入用户名和密码,并生成正确格式的输出。
若有多个用户,只需在 .htpasswd 文件中按相同格式添加多行即可。
访问网站
当您尝试访问受 .htaccess 保护的网站时,浏览器会弹出标准的用户名/密码对话框。或者,您也可以在 URL 中以未加密形式发送用户名和密码,格式如下:
http://username:password@www.website.com/directory/
修复 ExecCGI
在文件管理器中打开位于 public_html/addondomain/ 目录下的 .htaccess 文件,输入以下内容:
Options ExecCGI
点击屏幕底部的 保存 按钮,完成操作!
重启 Apache
您无需重启 Apache,之后只需“强制刷新”网页即可看到更改效果。浏览您的网站,打开应受影响的页面,然后按 Ctrl + F5 刷新全部内容。(部分电脑需先开启 F 锁才能使用 F5。)现在,您的新 .htaccess 代码应已生效。
或者,您可以清除浏览器缓存,关闭浏览器,重新打开浏览器,再次尝试访问网页。
Safari 用户: Safari 3 及以下版本需使用 cmd + R 快捷键刷新。Safari 4 及以上版本需按住 shift 键并点击地址栏旁的刷新图标。