linux URL的301重定向代码分析

所以凡是使用linux的主机,我都会定义个301重定向,以利于SEO。昨天照例把htaccess传到服务器上,没想到传上后网站无法访问,一删除就恢复正常。看了很多遍代码,也没发现什么问题。 干脆就重新学习下URL重写方法。
规范化URL
描述:
在有些web服务器上,一个资源会拥有多个URL。在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用。无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL。
解决方案:
对所有不规范的URL执行一个外部HTTP重定向,以改变它在浏览器地址栏中的显示及其后继请求。下例中的规则集用规范的/u/user替换/~user,并修正了/u/user所遗漏的后缀斜杠。
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]

规范化主机名

描述:
这个规则的目的是强制使用特定的主机名以代替其他名字。比如,你想强制使用www.example.com代替example.com,就可以在以下方案的基础上进行修改:
解决方案:
对运行在非80端口的站点

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]

对运行在80端口的站点

RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]

参考了上面的规则,发现自己原先的代码里少了个!号,加上就恢复正常了。
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^do-javascript.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.do-javascript.com/$1 [r=301,nc]

(0)

相关推荐

  • IIS 301重定向与程序代码实现301重定向的差别

    先说一下IIS 301重定向的做法: IIS中301重定向 打开"Internet信息服务",右击你要跳转的文件夹或者文件,在弹出的右键菜单中选择"属性"弹出的对话框中,"目录"选项下找到"连接到资源是的内容来源",选择"重定向到URL",在下面的文本框中输入要跳转到的页面同时,将"客户端将定向到" 下面的复选框 "资源的永久重定向"选上 点击"应用&quo

  • 完美解决IIS和APACHE的301重定向(带参数)

    在5月份的时候,因为对一个网站改版,导致大量链接失效,正好5月底GOOGLE PR大更新,这个网站的PR直接从3降低到2,并且收录也急剧下滑,可以说网站的大幅度改版是导致本次PR降低的主要因素,后在GOOGLE的网站管理后台也验证了这个结论,于是赶紧使用JAVASCRIPT进行了404跳转定向,从实际的测试效果来看,GOOGLE对404跳转也是支持的,不会惩罚该网站的权值,可是根据IIS日志分析,感觉BAIDU spider对404的重定向似乎无动于衷,于是近日干脆对原失效的链接重新设置301重

  • Nginx下301重定向域名的方法小结

    linux中nginx 301重定向跳转方法总结,有需要的朋友可参考一下. 第一种情况:访问aaaaaaa站定向到bbbbbbbbbbb站 复制代码 代码如下: server { server_naaaaaaame www.aaaaaaa.com ; rewrite ^(.*) http://www.bbbbbbbbbbb.com$1 permaaaaaaanent; } 第二种情况:不是访问aaaaaaa站的全部重定向到指定页面 复制代码 代码如下: server { server_naaaa

  • 比较详细的win2003 IIS6.0 301重定向带参数的问题解决方法

    网站更换域名,把旧域名用301指到新域名来. 从iis中设置url永久转向就可以,看上去很容易,用了一会儿才发现,参数都没有带上. 从微软网站上找到如下说明,果然好使:IIS 301重定向设置 通过本次设置IIS的重定向,感觉还是比较方便的.下面就说一下IIS的重定向方法,因为网站改版是面向目录的迁移的,所以不得不了解以下几个微软的IIS定向参数: 我们在设置URL重定向的时候是可以使用带参数形式URL的,因为毕竟经常面对的URL是很多,要是就那么一两个页面301重定向随便怎么整都可以了. 参数

  • 解析网站301重定向的实现方法,包括iis,apache,asp,php的方法

    页面永久性移走(301重定向)是一种非常重要的"自动转向"技术. 首先,给一个工具,是来检测服务器头信息的,简单来说就是看看你的站点的301是否成功了.不要小看这个301,如果被做成了302什么的,你的站可能就要让你欢喜让你忧了. 检测地址:http://www.seoconsultants.com/tools/headers.asp#results 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎

  • asp.net php asp jsp 301重定向的代码(集合)

    1.Linux主机重定向 Godaddy的Liunx主机,Godaddy本身已经支持Apache,所以直接创建一个.htaccess文件就可以了,一般来说,在本地无法创建.htaccess的时候可以先创建一个txt格式文件,上传到根目录的时候再重命名为".htaccess"就可以了.网上很多如何进行 301重定向的教程,无论是整站重定向还是单页重定向.下面就以我的www.jb51.net为例 1.1 无www域名转移到www域名 复制代码 代码如下: RewriteEngine on

  • 301重定向实现方法,及对网站优化的作用

    什么是301重定向呢? 301重定向是当用户或搜索引擎向网站服务器发出浏览请求时,服务器返回的HTTP数据流中头信息(header)中的状态码的一种,表示本网页永久性转移到另一个地址.其它常见的状态码还包括,200表示一切正常,404网页找不到,302暂时转向,等等. 为什么要用301转向? 网址转向方法主要包括:301转向,302转向,JavaScript转向,PHP/ASP/CGI转向,META REFRESH网页META刷新等.302转向可能会有URL规范化问题.其它方法都是常用的作弊手法

  • 使用ISAPI_Rewrite做简单实用的301重定向

    但是对于虚拟主机用户来说,301重定向很难,因为虚拟主机提供商一般不会提供这个设置. 但是对于安装了ISAPI Rewrite的空间,那么301重定向就相对来说变得简单了. 下面我们还是以实例来说明正确使用ISAPI Rewrite做301重定向的方法吧. 1.3版的域名重定向: 复制代码 代码如下: # For ISAPI_Rewrite 1.3 重定向域名 #重定向jb51.cn RewriteCond Host: ^jb51.net$ RewriteRule (.*) http://jb5

  • linux URL的301重定向代码分析

    所以凡是使用linux的主机,我都会定义个301重定向,以利于SEO.昨天照例把htaccess传到服务器上,没想到传上后网站无法访问,一删除就恢复正常.看了很多遍代码,也没发现什么问题. 干脆就重新学习下URL重写方法.规范化URL描述:在有些web服务器上,一个资源会拥有多个URL.在实际应用和发布中应该使用的是规范的URL,其他的则是简写或者只在内部使用.无论用户在请求中使用什么形式的URL,最终看见的都应该是规范的URL.解决方案:对所有不规范的URL执行一个外部HTTP重定向,以改变它

  • 301重定向代码合集(iis,asp,php,asp.net,apache)

    1.IIS下301设置 Internet信息服务管理器 -> 虚拟目录 -> 重定向到URL,输入需要转向的目标URL,并选择"资源的永久重定向". 在IIS中,也可以通过安装ISAPI Rewrite组件来实现如Apache中mod_rewrite的功能,详见ISAPI Rewrite 3下载及常用301规则. 2.ASP下的301重定向代码 <%@ Language=VBScript %> <% Response.Status="301 Mo

  • Nginx下WordPress链接(url伪静态)301永久重定向实现方法

    问题: 在几个blog程序中折腾的结果~ 导致url连续二次变化.这是第三次了. nginx 通过rewrite 使用 "permanent;"参数 成301永久url重定向. 以往的url结构 http://www.jb51.net/post/199/ 现在需要的url结构 http://www.jb51.net/archives/199.html 过程: 学习nginx的配置规则,学习正则表达式(我也没接触过,学呗.) nginx的中文维科:http://wiki.nginx.or

  • ASP.NET实现301重定向方法

    <span style="font-family:'宋体';font-size:10.5pt;"></span> 关于百度等搜索引擎对于是否带"www"前缀的域名的识别问题:即搜索引擎会将www.abc.com和abc.com识别为不同的两个域名,这样做的后果就是分散了对网站的关注度,不利于网站的宣传和推广. 仅仅是通过Response.Redirect方法来重定向该连接,虽然可以将连接进行重定向,但是无法解决搜索引擎的识别分散问题的:此问题

  • IIS中301重定向跳转web.config规则和http重定向模块的实现教程

    目录 web.config规则 http重定向模块 1. IIS中添加一个要跳转的域名网站(如a.net) 2. IIS中在欲重定向的网页或目录上按右键,选中“重定向到URL” 3. 在对话框中输入目标页面的地址,选中“资源的永久重定向” 4. 点击“应用” 总结 所谓301跳转,对于搜索引擎而言,便是,对搜索引擎发出信息,告诉搜索引擎:“此url地址已经永久的进行跳转到了‘XXX’url地址.”而对于用户而言,301跳转后的网站,在用户使用的时候,输入旧的地址,会自动跳转到新的地址,只是这个过

  • php 实现301重定向跳转实例代码

    在php中301重定向实现方法很简单我们只要简单的利用header发送301状态代码,然后再用header进行跳转,效果与apache,iis,nginx都是一样的效果哦. 一:更推荐这种方法,因为它可以把http://www.jb51.net原来所有的url都转到http://jb51.net新的地址上 代码如下 <?php $the_host = $_SERVER['HTTP_HOST']; $request_uri = isset($_SERVER['REQUEST_URI']) ? $_

  • Apache中301重定向的配置代码

    新建.htaccess文件,输入下列内容(需要开启mod_rewrite): 1)将不带WWW的域名转向到带WWW的域名下 复制代码 代码如下: Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^jb51.net [NC] RewriteRule ^(.*)$ http://www.jb51.net/$1 [L,R=301] 2)重定向到新域名 复制代码 代码如下: Options +FollowSymLinks

随机推荐