如何在 nginx 服务器上做 301 重定向

如何在 nginx 服务器上做 301 重定向,第1张

通过rewrite指令的permanent参数,可以实现301重定向

rewrite .* /newURL/ permanent

将所有的请求重定向到/newURL上,permanent参数会使重定向成为永久重定向301,如果不加,就是302临时重定向

第一种情况:把不带www的重定向到带www

在网站建好的情况下,我们把这个网址绑定主机头,域名解析到该服务器IP,这时候已经可以访问。有些朋友直接在这个网站上绑定不带www的域名,笔者不建议这样做,这样会给我们的301重定向带来一个麻烦,很可能会使你的重定向陷入死循环、无法打开页面。

首先,我们新建一个网站,绑定的主机头就是不带www的域名,后网站目录下只要随便写一个301.html文件或者xxx.html文件等等,文件内容为空即可。然后我们右键---属性---主目录,选择第三个,重定向到URL,下面填写上你的带www的那个域名。把资源的永久重定向勾选上,确认即可,这样就完成了不带www的域名重定向到带www的域名。这样做并且不会出现死循环等情况。

第二种情况:把www.a.com重定向到www.b.com

这种情况就比较简单,只需在www.a.com上面右键属性---主目录,重定向到url,下面填上www.b.com,再把资源永久重定向勾选上即可。注意,如果你需要把域名后面带的参数都重定向到新的域名,并一一对应,你需要在重定向到的域名后面加上$S$Q,并把上面输入的准确URL勾选上。

顺便解释一下:$S 将请求的URL 的后缀传递给新的URL,而$Q 则将初始URL 中的参数(如 querystring 参数)传递至新的 URL,包括问号(?)。

第三种情况:把www.a.com/index.html重定向到www.b.com

域名后面带上了后缀,这种情况很多人都遇到过,尤其是使用DZ的朋友,经常都会在域名后面自动带上了forum.php等后缀名。虽然说搜索引擎对此没有明确表态说会分散权重,但还是有人实验过这两则之间的细微差别,从另一个方面来说,去掉了后缀,也使域名看起来更加清爽。

其实重定向这种情况和以上两种其实一样简单。

我们只要在IIS上点击我们要做重定向的网站,在右侧选中要做重定向的文件,如index.html,然后右击--属性----文件选中重定向 ,在下面填入具体的网址,然后把永久重定向勾选上即可。

301重定向方案合集

asp301,php301,伪静态301,ASP.Net的301,JSP的301,Apache做301

IIS下直接301设置

Internet信息服务管理器 ->虚拟目录 ->重定向到URL,输入需要转向的目标URL,并选择“资源的永久重定向”。

这个需要服务器直接操作,部分空间商不会给做。介于空间管理程序和方法各不相同,例如之后的WEB操作管理 有可能导致301间接失效,所以如果不是自己独立服务器 不建议直接操作。如果是咱们云主机系列,可直接提交工单稍等即可。

条条大路通罗马咱还有其他备用方案:

1、服务器装有isapi-rewirte组件,用户间的伪静态完全独立,互不干涉 使用通用的规则 自定义程度较高,可以直接在原伪静态规则文件httpd.ini 加上301跳转代码,立即生效。

【详解:利用 ISAPI Rewrite 做301永久重定向】

[ISAPI_Rewrite]

CacheClockRate 3600

RepeatLimit 32

RewriteEngine On

RewriteCond Host: ^boaer\.com$

RewriteRule (.*) http\://www\.boaer\.com$1 [I,RP]

注:----URL标准化的301重定向(以上代码)需要写在其他URL-rewrite代码之前。----

2、ASP下的301转向代码

<%@ Language=VBScript %>

<%

Response.Status=”301 Moved Permanently”

Response.AddHeader “Location”, “http://www.*****/***/301/”

%>

3、转向代码

<script runat=”server”>

private void Page_Load(object sender, System.EventArgs e)

{

Response.Status = “301 Moved Permanently”

Response.AddHeader(”Location”,”http://www.*****.cn/***/301/“)

}

</script>

4、PHP下的301转向代码

header(”HTTP/1.1 301 Moved Permanently”)

header(”Location: http://www.*****.cn/***/301/”)

exit()

5、CGI Perl下的301转向代码

$q = new CGI

print $q->redirect(”http://www.*****.com/”)

6、转向代码

<%

response.setStatus(301)

response.setHeader( “Location”, “http://www.*****.cn/” )

response.setHeader( “Connection”, “close” )

%>

7、转向代码

新建.htaccess文件,输入下列内容(需要开启mod_rewrite):

1)将不带WWW的域名转向到带WWW的域名下

Options +FollowSymLinks

RewriteEngine on

RewriteCond %{HTTP_HOST} ^lesishu.cn [NC]

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

2)重定向到新域名

Options +FollowSymLinks

RewriteEngine on

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

3)使用正则进行301转向,实现伪静态

Options +FollowSymLinks

RewriteEngine on

RewriteRule ^news-(.+)\.html$ news.php?id=$1

将news.php?id=123这样的地址转向到news-123.html

8、Apache下vhosts.conf中配置301转向

为实现URL规范化,SEO通常将不带WWW的域名转向到带WWW域名,vhosts.conf中配置为:

<VirtualHost *:80>

ServerName www.*****.cn

DocumentRoot /home/lesishu

</VirtualHost>

<VirtualHost *:80>

ServerName lesishu.cn

RedirectMatch permanent ^/(.*) http://www.*****.cn/$1

</VirtualHost>

Apache下除了以上2种方法,还有其他配置方法和可选参数,建议阅读Apache文档。

祝:所有站长 网站火火 每天都有好心情!!!

301转向情况检测

http://www.seoconsultants.com/tools/headers.asp

http://www.internetofficer.com/seo-tool/redirect-check/


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/16733.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-13
下一篇2023-02-13

发表评论

登录后才能评论

评论列表(0条)

    保存