Apache Rewrite实现URL的301跳转和域名跳转


在Apache服务器上使用Rewrite模块来实现URL的301永久重定向和域名跳转是一种常见做法,这有助于提高网站的SEO和用户体验。以下是如何配置这两种跳转的示例:

### 1. URL的301跳转

要在Apache中实现URL的301跳转,你需要在`.htaccess`文件中使用`RewriteRule`指令,并设置状态码为301。例如,将`/old-page.html`重定向到`/new-page.html`:

apache RewriteEngine On RewriteRule ^old-page\.html$ /new-page.html [R=301,L]

这里,`^old-page\.html$`是正则表达式,匹配URL路径`/old-page.html`。`/new-page.html`是目标URL。`[R=301,L]`标志表明这是一个301永久重定向,并且这是最后一条规则(如果匹配成功,则不再处理后续规则)。

### 2. 域名跳转

域名跳转通常用于将一个域名重定向到另一个域名。这也可以通过`.htaccess`文件中的`RewriteRule`实现,但更常见的做法是使用`Redirect`指令(尽管`Redirect`不支持正则表达式,仅适用于简单的重定向)或`RewriteCond`和`RewriteRule`组合来实现更复杂的条件判断。

对于简单的域名跳转,可以使用`Redirect`指令(如果满足需求):

apache Redirect 301 / http://www.newdomain.com/

但是,如果你需要基于某些条件(如仅当请求的是特定域名时)进行跳转,则应该使用`RewriteCond`和`RewriteRule`:

apache RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.olddomain\.com$ RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]

在这个例子中,`RewriteCond`指令检查请求的主机名是否为`olddomain.com`或`www.olddomain.com`。如果是,`RewriteRule`将执行,将所有请求重定向到`http://www.newdomain.com/`,并保持请求的URL路径不变(通过`$1`捕获并重新使用)。

请根据你的具体需求选择适当的配置方法,并确保在Apache服务器中启用了Rewrite模块。