标题: 关于动态映射静态的资料--GOOGLE搜索引擎完全解惑
暖月
管理员
Rank: 9


UID 1
精华 228
积分 41940
帖子 8884
威望 32
金币 12694
热心 10382
阅读权限 102
注册 2005-7-26
状态 离线
关于动态映射静态的资料--GOOGLE搜索引擎完全解惑

静态链接:现很多网站都是才的静态页面作为归档,这种归档正是迎合了Google的设计.
URL表现为静态链接:spider也会通过对网页的cookie进行检查,防止隐私内容进入索引,这也是很多网站的内容难被Google索引的原因。
原因很简单:一般情况下,整个互联网上静态网页比动态网页质量要高很多。因此搜索引擎会优先收录静态网页,而在搜索结果中静态网页往往也比相同的内容的动态网页排名要靠前的多。
上图所说的是一个网站地址,也就是一个 URL ! 是一个静态的URL地址!!这个网站是后台动态数据添加的,
先不说他是怎么实现的!我们先来讲讲的生成静态后的好处!

首先我们要知道为什么要生成静态页面的URL效果,目的什么简单就是为了现在很流行的搜索引擎收录Google问题.
对于搜索引擎来讲 新的页源 静态的URL就是好的.静态就是在URL地址中没有?出现过,就会认为是静态的页面.

一个动态的效果的网站,比如 (http://www.google.com/x21net/good.php?nesid=13&sty=3&lan=cn)

他的静态演变是 http://www.google.com/x21net/good.php/nesid-13_sty-3_lan-cn
或者是这样演变 http://www.google.com/x21net/good.php/13-3-cn

也可以是 http://www.google.com/x21net/good-13-3-cn.html

下面让我们看看是怎么样实现的吧!

以下是对用PHP语言开发的网站URL处理参考

假静态真效果的处理办法,这样的处理办法是对虚拟主机很见效.

不需要在服务器上作什么事情,方便快捷,可以到达我们最终的目的.就是看上去不是很满意!!!~

这种方法是通过 PHP_INFO 来处理的!你可以获取到虚拟主机的 REQUEST_URI 这个系统变量是都开的!

          $xfilename = basename($_SERVER[SCRIPT_NAME]);
   if ($xfilename=="x21net.php") {
      if (!empty($_GET[x21net_id])) {
           $x21net_id = intval($_GET[x21net_id]);
           $pagenum = intval($_GET[pagenum]);
        }
      if (empty($x21net_id)) {
           $nav = $_SERVER["REQUEST_URI"];
           $script = $_SERVER["SCRIPT_NAME"];
           $nav = ereg_replace("^$script","",urldecode($nav));
           $vars = explode("/",$nav);
           $x21net_id = intval($vars[1]);
         if (!empty($vars[2])) {
             $pagenum = intval($vars[2]);
          }
      }
   }

变量名称 $xfilename 是用来获取到 当前的文件名称
x21net.php 是你要执行的文件
$x21net_id 是提交到这个页面的变量 $pagenum 是附属地址

这样的一段代码我们把他放在PHP页面中去 执行一看看效果怎么样!!嘿嘿!不错吧!!

效果就像这样 http://www.XXX.com/x21net.php/114
其原型是这样的 http://www.XXX.com/x21net.php?x21net_id=114

这样的效果也完全可以被搜索引擎所喜欢!
注意:APACHE2中缺省是不允许PATH_INFO的,需要设置 AcceptPathInfo on
    在使用这样的处理URL的同时,最好你还要生成一张好的 SITEMAP 文件.这样就更佳了!

真实的从核心代码中处理办法,同时也需要服务器支持

在你的appce的服务器的 WEBSITE Directory 下面 放上 .htaccess 用来处理你在 URL 地址中所触发的环境映射.
加载了ReWrite模块,这个看看你的Httpd.conf的配置文件之中关于rewrite的模块是否#屏蔽了
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
打开Rewrite
.htaccess 的文件内容.具体的环境映射要你自己去设置了!~:) RewriteEngine On
RewriteRule ^browse-(.*)-(.*)-(.*).html browse.php?cat=$2&pg_which=$3

接下拉,我们来看一下程序要处理的本分:
$mod_rewrite_str_arr = array(' ','-','/','\\',',','#',':',';','\'','"','[',']','{','}','|','`','~','!','@','%','$','^','&','*','=','+');

我先要处理掉包含在 URL 正确表达式中的非其字符.

$sub_name2 = str_replace($mod_rewrite_str_arr,'_',$sub_name);

$sub_url = strtolower("browse-$sub_name2-$sub_id-1.html"); 这里所作的就是对URL表达是进行名称从组.

在 ECHO 出来这个地址.

会发现已经是这样的了  http://www.XXX.com/seeksoft/browse-windows-4-1.html !!
他的原型是 :  http://www.XXX.com/seeksoft/browse.php?cat=4

嘿嘿!~ 就是这么简单呀!真的是没有东西了!!具体数据库提取和URL预组是要看你怎么样来设计了!


网友 暖月 签名 - 网友社区 稷思天下有饥者,由己饥之也;
禹思天下有溺者,由己溺之也;
顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)
暖月
管理员
Rank: 9


UID 1
精华 228
积分 41940
帖子 8884
威望 32
金币 12694
热心 10382
阅读权限 102
注册 2005-7-26
状态 离线
以下是对用ASP语言开发的网站URL处理参考



怎么样才能实现将 x21net.asp?news_id=158 这样的链接映射成 x21net/news_158.html,从外面看上去和静态链接一样。
从我个人的角度来讲,如果我是 asp 系统的话,我就会从POST的角度来处理.
          <%
dim strUrl,Item_Classid,id,FileName,FilePath,Do_Url,Html_Temp
Html_Temp="<UL>"
For i=1 To 3
Html_Temp = Html_Temp&"<LI>"
Item_Classid = i
FileName = "Index"&Item_Classid&".htm"
FilePath = Server.MapPath("/")&"\"&FileName
Html_Temp = Html_Temp&FilePath&"</LI>"
Do_Url = "http://"
Do_Url = Do_Url&Request.ServerVariables("SERVER_NAME")&"/detail.asp"
Do_Url = Do_Url&"?Item_Classid="&Item_Classid
strUrl = Do_Url
dim objXmlHttp
set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
objXmlHttp.open "GET",strUrl,false
objXmlHttp.send()
Dim binFileData
binFileData = objXmlHttp.responseBody
Dim objAdoStream
set objAdoStream = Server.CreateObject("ADODB.Stream")
objAdoStream.Type = 1
objAdoStream.Open()
objAdoStream.Write(binFileData)
objAdoStream.SaveToFile FilePath,2
objAdoStream.Close()
Next
Html_Temp = Html_Temp&"<UL>"
Response.Write Html_Temp
Response.Write ( "<BR>" )
Response.Write ( "成功生成文件:" )
%>


网友 暖月 签名 - 网友社区 稷思天下有饥者,由己饥之也;
禹思天下有溺者,由己溺之也;
顶部
暖月
管理员
Rank: 9


UID 1
精华 228
积分 41940
帖子 8884
威望 32
金币 12694
热心 10382
阅读权限 102
注册 2005-7-26
状态 离线
其实我们可以利用ISAPI组件来完成,不需要修改任何程序。只要加了一个正则表达式,便使整个WEB变成静态。

组件:ISAPI Rewrite

Using loops (Next flag) to convert request parameters
Suppose you wish to access physical URLs like http://www.myhost.com/foo.asp?a=A&b=B&c=C using requests like http://www.myhost.com/foo.asp/a/A/b/B/c/C and the number of parameters may vary from one request to another.

There exists at least two possible solutions. You could simply add a separate rule for each possible number of parameters or you could use a technique demonstrated by the following example.

[ISAPI_Rewrite]
RewriteRule (.*?\.asp)(\?[^/]*)?/([^/]*)/([^/]*)(.*) $1(?2$2&:\?)$3=$4$5 [N,I]


This rule will extract one parameter from request URL, append it to the end of the request string and restart rules processing from the beginning. So it will loop until all parameters will be moved to the right place (or until the RepeatLimit will be exceeded).

There also exist many variations of this rule with different separator characters. For example, to use URLs like http://www.myhost.com/foo.asp~a~A~b~B~c~C the following rule could be implemented:

[ISAPI_Rewrite]
RewriteRule (.*?\.asp)(\?[^~]*)?~([^~]*)~([^~]*)(.*) $1(?2$2&:\?)$3=$4$5 [N,I]

网友 暖月 签名 - 网友社区 稷思天下有饥者,由己饥之也;
禹思天下有溺者,由己溺之也;
顶部
天意
荣誉会员
Rank: 1


UID 681
精华 0
积分 0
帖子 81
威望 113
金币 0
热心 0
阅读权限 50
注册 2005-11-13
状态 离线
经典

顶部



当前时区 GMT+8, 现在时间是 2008-7-26 08:16
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP