使用 .htaccess 配置规则和重定向

.htaccess 文件是在目录级别的配置文件,由 Apache Web 服务器支持。它允许您为特定账户修改 Web 服务器设置(如启用或禁用功能),而不会影响全局服务器配置。

该文件会将其设置应用于其所在的整个目录,包括该目录下的所有文件和子目录。对 .htaccess 文件所做的任何更改都会立即生效,无需重启服务器。

如何查找 .htaccess 文件

要查找 .htaccess 文件:  

1. 进入您的 Spaceship 账户 >> 在 Launchpad 选择 Hosting Manager >> 在主机方案旁点击 Manage >> Files and Storage >> Manage Files(靠近网站名称)。

2. 您将被重定向到域名根文件夹。

3.  如果需要编辑域名的 .htaccess 文件,请在域名根文件夹中找到 .htaccess 文件,右键点击并选择 Edit 选项:


注意: 请确保在 Show Hidden Files (dotfiles) 选项已在 Settings 菜单中启用:


4. 如果文件管理器中没有 .htaccess 文件,可以点击 + File 按钮新建:


5. 现在您可以添加自己的配置规则并保存。
   

常用 .htaccess 规则列表

阻止 

此方法允许您根据用户的 IP 地址或域名进行阻止。它对于限制不受欢迎的访问者或仅允许网站所有者访问特定网站区域(如管理区)尤其有用。

要实现特定的阻止规则,请创建一个 .htaccess 文件并添加以下内容:

(允许其他所有人访问,仅阻止 IP 地址为 X.X.X.X 的用户)

<RequireAll>

Require all granted

Require not ip X.X.X.X

</RequireAll>

(仅允许特定 X.X.X.X 和 Y.Y.Y.Y IP 访问,阻止所有其他访问者)

<RequireAll>

Require all denied

Require ip X.X.X.X

Require ip Y.Y.Y.Y

</RequireAll>

注意: 请勿将已弃用的 AllowDenyOrder 指令与新 Require 指令一起使用。

Mod_Rewrite(重定向规则)

Mod_Rewrite 定义了网页和 URL 呈现给访问者的方式。

默认情况下,Mod_Rewrite 会将 URL 映射到相应的文件系统路径。但它也可以将一个 URL 重定向到另一个。

在设置重定向之前,选择最适合您需求的重定向类型非常重要:

  • 永久重定向(301):此重定向发送 301 状态码,表示页面已永久移动。它会被浏览器缓存,并通知搜索引擎和用户代理更新其数据库中的 URL。这是最常见的重定向类型。

  • 临时重定向(302):此重定向发送 302 状态码,表示移动是临时的。浏览器不会缓存此重定向,虽然会重定向访问者和搜索引擎,但原页面仍会被索引。除非您确定 URL 以后不会更改,否则建议使用此类型的重定向。

以下是一些最常见且实用的可通过 .htaccess 文件配置的重定向:

example1.com 永久重定向到 example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]

exampledomain1.com 临时重定向到 exampledomain2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]

注意:以下为永久重定向示例。临时重定向可通过将代码末尾的 [R=301,L] 替换为 [R=302,L] 来定义(如有需要)。

example1.com/subfolder 重定向到 example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]

从 HTTP 重定向到 HTTPS(以 example.com 为例)

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule .* https://example.com%{REQUEST_URI} [R,L]

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

从非 WWW 重定向到 WWW

  • 对于任何域名,.htaccess 都会生效:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  • 针对指定域名:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

从 WWW 重定向到非 WWW

  • 对于任何域名 .htaccess 都会生效:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  • 针对指定域名:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule (.*) http://example.com/$1 [R=301,L]

将所有 example.com 页面重定向到对应的 domain.com 页面

RedirectMatch 301 ^/(.*)$ http://domain.com/$1

注意:两个域名上的所有页面名称必须一致,否则重定向会导致“页面未找到”提示。

将单个页面重定向到新 URL

Redirect 301 /old_page.html http://www.domain.com/new_page.html

注意:此方法可用于将已删除页面重定向到 404 错误,或在更新内容引用后进行 SEO 调整。

授权/认证 

此类规则为目录或子目录定义安全限制。您可以为目录设置密码保护,任何访问者尝试访问时都需要输入用户名和密码。

设置此保护:

1. 在 /home/cpanel_user/.htpasswds/ 文件夹内创建要保护的目录(例如,domain.com/test,路径为 .htpasswds/domain.com/test/)。

2. 在该目录下创建 passwd 文件,并使用 在线生成器 添加加密的访问凭据。

3. 将以下指令添加到 .htaccess 文件中:

AuthType Basic

AuthName "Directory Name"

AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"

require valid-user

自定义错误页面

此功能允许您为网站创建个性化错误页面。当出现损坏的 URL 时,这是一项实用功能,因为它可以让您向访问者展示与网站主题一致的错误信息,避免显示默认的“404 File Not Found”错误,而是返回带有引导用户返回网站内容说明的自定义设计错误页面,防止用户困惑。

要设置自定义错误页面,请将以下内容添加到 .htaccess 文件中:

ErrorDocument 404 /404.html

该行指示 Apache Web 服务器在发生 404(文件未找到)错误时,加载位于域名根目录下的 404.html 文件。

注意: 若要为其他错误(如 403 或 500)创建自定义错误页面,只需将 404 替换为相应的错误代码,并将 /404.html 替换为您的自定义错误文件路径。

禁用现有 .htaccess 规则

如果您需要临时禁用部分现有规则(如测试用途),可以很容易地将其注释掉。只需在行首添加井号(#)即可。

或者,您也可以通过选中单行或多行并使用 Ctrl + / 快捷键来禁用。

需要提供有效的电子邮箱