网站总是在变化。您可以添加和删除内容、更改域、重构等等。如果你想让你的网站在所有这些变化中表现良好,你需要知道如何处理重定向。
在服务器配置级别实现此目的的一种方法是在.htaccess文件中创建重定向规则。
什么是。htaccess文件?
在Apache服务器上,.htaccess文件使您能够进行配置更改,即使您没有访问主服务器配置文件的权限。
.htaccess文件在单独的目录基础上运行。如果您需要创建一个仅适用于特定目录及其所有子目录的规则,这将非常有用。这还可以帮助您避免编辑服务器的主配置文件。
.htaccess使用与根配置相同的语法,这意味着您通常添加到服务器配置文件中的任何指令都可以在这里使用。
但是,Apache的官方文档建议仅在绝对必要时使用.htaccess文件,因为它们有时会降低服务器的性能。因此,如果它对您的站点有意义,请考虑使用其他重定向方法,例如服务器的主配置文件、JavaScript、PHP或HTML。
也有可用的插件,比如WordPress上的重定向,允许你重定向页面,而不需要对主题有太多的了解。
在服务器上启用。htaccess
如果.htaccess尚未在您的服务器上启用,则需要启用它。您需要具有sudo或root权限才能执行此操作。如果您没有root权限,请寻求有权限的人的帮助。
首先,打开网站的http配置文件。然后,在VirtualHost()块之后,添加以下内容:
< /虚拟主机>
/var/www/test.com/public_html <目录>
Options索引FollowSymLinks
AllowOverride所有
要求全部同意
< /目录>
接下来,保存并重新启动Apache。
一些CMS系统,如WordPress或Drupal,会自动创建。htaccess文件。如果没有,可以使用文本编辑器手动创建。保存为”。Htaccess”,没有其他文件扩展名,然后将其添加到根目录下站点的public_html文件夹中。
专业提示:在对配置文件(无论是根配置文件还是.htaccess)进行任何更改之前,始终保存一个备份。错误可能导致HTTP 500内部服务器错误。使用最近的备份文件,如果您犯了错误,您将能够快速地撤销更改。
在.htaccess中使用“重定向”指令
一旦理解了语法,在.htaccess中使用重定向指令相当简单。
下面,我们将使用一个简单的指令将单个页面重定向到同一域中的另一个页面:
首先,用绿色突出显示的是指令的名称。在本例中,我们使用重定向。.htaccess中的所有内容都是区分大小写的,所以请确保大写R。
其次,用蓝色突出显示的是要使用的HTTP状态码。本例使用301表示永久重定向。您可以将其更改为最合适的状态码。如果不包含,系统将自动认为重定向是临时的,并使用302状态码。
第三,黄色的部分,是你重新引导访问者离开的原始位置。位置开头的正斜杠代表整个当前域。接下来的所有内容都告诉您要重定向的页面位于何处。在本例中,我们将页面放置在子文件夹中。
如果要重定向整个域,而不是单个子文件夹,则只需要使用正斜杠来引用它。
最后,用紫色表示的是目标页面的位置,或者你要把访问者送到的目的地。在本例中,原始页面和目标页面都位于当前域,因此目标路径以正斜杠开始。如果你重定向到一个单独的域名页面,你将需要包括整个url。
根据您需要重定向的内容,可以以多种不同的方式调整该指令。下面的图表包括7个常见的重定向以及如何编写它们。
重定向规则
如何写
在同一域的页面之间重定向:
重定向301 /subfolder/old_page.html /subfolder/new_page.html
将一个页面重定向到另一个不同域的页面:
重定向301 /子文件夹/old_page.html https://www.exampleurl.com/subfolder/new_page.html
在同一域中的子文件夹之间重定向:
重定向301 /old_subfolder /new_subfolder
将一个子文件夹重定向到外部位置:
重定向301 /子文件夹https://www.exampleurl.com/
将域重定向到同一域上的子文件夹:
重定向302 /子文件夹
在域之间重定向:
重定向301 /https://www.exampleurl.com
重定向到自定义404页面:
ErrorDocument 404 /error/pagenotfound.htm
注意:自定义404页面重定向使用不同的指令名称,但它们的格式与此图中的其他重定向规则相同。如果您正在使用它,请确保您已经创建了错误页面。
通过重写模块重定向到HTTPS
一些更复杂的重定向使用重写模块(也称为mod_rewrite),而不是上面解释的重定向指令。Rewrite模块允许您在指定的条件下操作和重写URL请求。
例如,如果您希望用于访问您的网站的所有url自动更改为HTTPS,则需要使用此方法。
首先,你需要通过声明以下语句来启用RewriteEngine:
RewriteEngine上
您只需要为每个文档做一次这样的操作,即使您要创建多个规则。
一旦RewriteEngine被启用,你可以使用下面的代码重写所有的URL请求来使用HTTPS:
rewritecsecond %{https}关闭
rewriterrule ^(.*)$ https://www.ExampleURL.com/$1 [R=301,L]
第一行检查当前URL中是否已经包含HTTPS。在此声明中,“关闭”表示如果地址不包含HTTPS,则应用新规则。
第二行代码创建规则。当满足条件时(即当URL中不包含HTTPS时),URL将相应地重写。
最后,[R=301,L]表示这是HTTP 301或永久重定向。L表示这是集合中的最后一条规则,在运行它之后,服务器应该返回一个结果。
用站点审计检查你的重定向
维护网站是一项复杂的工作,需要注意细节,而且很容易出错。定期审核您的网站,确保您的网站保持健康。
Site Audit可以自动为你检查错误,提供建议,甚至帮助你优先考虑最重要的修复。它可以检查您的重定向问题,如:
规范的链接
失效链接
HTTPS
临时重定向
永久重定向
通过创建有效的重定向,并严格检查您的工作,您可以创建一个对当前用户和自然搜索表现良好的网站。