URL重写有哪些用途

阅读量:2760

定义:URL重写(URLrewriting)指在服务器获得一个访问网站的请求后,将访问请求中的URL重新写成另一个URL的过url重写程。


举个例子来说,如果通过浏览器进来的URL是“UserProfile.aspx?ID=1”那么它可以被重写成“UserProfile/1.aspx”,这样的URL,这样的网址可以更好的被网站所阅读。


更专业的说法

如果浏览器不支持Cookie或用户阻止了所有Cookie,可以把会话ID附加在HTML页面中所有的URL上,这些页面作为响应发送给客户。这样,当用户单击URL时,会话ID被自动作为请求行的一部分而不是作为头行发送回服务器。这种方法称为URL重写(URLrewriting)。


注意要点

URL重写是支持会话的有力方法。在不能确定浏览器是否支持Cookie的情况下应该使用这种方法。然而,使用URL重写应该注意下面几点:

1.如果使用URL重写,应该在应用程序的所有页面中,对所有的URL编码,包括所有的超链接和表单的action属性值。

2.应用程序的所有的页面都应该是动态的。因为不同的用户具有不同的会话ID,因此在静态HTML页面中无法在URL上附加会话ID。

3.所有静态的HTML页面必须通过Servlet运行,在它将页面发送给客户时会重写URL。


标准化

很多情况下,从URL发送请求并返回网页内容的过程来看,URL都是互不相同的。对于这些不同的URL,Web服务器完全可以返回完全不同的内容。

但当这些URL所对应的内容都一样时(一般情况下都一样的),搜索引擎需要从这些rul中选一个具有代表性的,而忽略其余的。那么这个被搜索引擎选择了的URL,就是一个标准化的URL。谷歌选择的这个过程称为“标准化”。

url重写代码


静态化

这是SEO过程中经常碰到的问题,也是必须解决的问题。因为搜索引擎喜欢静态页面。从Web服务器的角度,这个问题转变为:如何将静态化的文件名称转化成参数。

⒈把网页上带链接的地方,都换上新的静态化链接。搜索引擎和浏览器将通过该链接来发生请求。(有些人做修改不是在网页上,而是进行动态链接向静态链接的转向,这是严重错误的)

⒉在httpd.conf或.htaccess中使用RewriteRule:

RewriteRule"^/dir/([^./]*)\.html""/dir/script.cgi?doc=$1"[PT]

[PT]标记告诉Apache执行后续的所有操作。

通过这个功能,使动态页面以静态链接的形式展示给搜索引擎,从而达到URL优化的目的。

3.根据不同的服务器就会有不同的URL重写规则,比如iisapachenginx这三种重写方式都是不同的,并非完全一样的。


作用

重写URL是非常有用的一个功能,因为它可以让你提高搜索引擎阅读和索引你的网站的能力;而且在你改变了自己的网站结构后,无需要求用户修改他们的书签,无需其他网站修改它们的友情链接;它还可以提高你的网站的安全性;而且通常会让你的网站更加便于使用和更专业。

当客户机不接受cookie时,server就使用URL重写作为会话跟踪的基本方式.URL重写,添加了附加数据(会话ID)到请求的URL路径上.

会话ID必须被编码作为该URL字符串中的路径参数。该参数的名称为jsessionid,

例如:

index.html;jsessionid=1234


优点

⒈缩短url,隐藏实际路径提高安全性。

⒉易于用户记忆和键入。

⒊易于被搜索引擎收录。


url重写-404

重定向

很多时候,我们考虑把无效的URL比如:用户拼错的URL、不存在的URL重定向到别的网页,例如网站的首页、404页面等。

在httpd.conf或.htaccess文件中使用ErrorDocument来捕获404(找不到文件)错误:

ErrorDocument404/index.html

DirectoryIndexindex.html/path/to/notfound.html

本功能会让所有的404错误——每次当某人请求无效的URL时,都返回URL/index.html提供的网站首页。

⒈直接指向首页是否是合适的?或者让它指向到一个404页面会更好些?如果在404页面用javascript做一个跳转到首页,也是SEO允许的做法。

⒉即使返回有效的文件,仍然会将404状态码返回给客户端和搜索引擎。这表示搜索引擎机器人来确认网站上的链接时,仍然会得到正确的结果(404状态码)。

文章热搜

官方客服 028-61355202
友情链接

微信公众号

微信小程序

© 2020 dxm.so 《中华人民共和国增值电信业务经营许可证》编号: 川B2-20170249号 ICP证: 蜀ICP备14008752号 四川省成都市青羊区光华北三路98号光华中心D栋1609