Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)归海一刀
published in(发表于) 2014/2/17 7:36:15
PHP技巧:动态URL静态化_[PHP教程]

PHP技巧:动态URL静态化_[PHP教程]

动态URL静态化的主要目的,其一是搜索引擎优化(SEO),其二是面向用户友好。动态URL静态化是把一个动态地址转化成一个静态地址。其实,这个静态地址的内容还是从动态地址来的,只是看起来,类似一个静态地址。例如,本站页面


http://www.xxx.cn/blog/read.php/416.htm


其真实地址是


http://www.xxx.cn/blog/read.php?416


采用一定的技术,把第一个地址指向第二个地址,也就实现了动态URL静态化的目的。

如 果进一步做到搜索引擎优化(SEO),可以尝试把地址修改成容易理解的文字,例如,416.htm可以修改为 child_kindergarten.html。这种做法在英文网站很流行,直接把标题作为连接就行了。中文网站实现比较困难。多数还是使用数字的。这 种做法主要针对Google,在目前的搜索引擎中,例如百度,MSN,Yahoo,没有谁比Google更重视url。

动态URL静态化 有两种办法,第一是使用Web服务器的,第二是编程实现。编程实现思路比较简单,这里暂时不多说。我们的网站 www.childhood.net.cn由于使用的是一个小型的虚拟主机,所以不支持地址转化,就只有使用php编程实现。当然,多数的程序已经包括了 这部分,不需要自己写程序了。我们使用的bo-blog也已经包括了编程动态URL静态化,尽管还不是很完全。

基于Web服务器的动态 URL静态化就简单的多。当然,这里面包括两个部分,第一是配置Web服务器。基本上,大家使用虚拟主机的比较多,不可能自己配置,提供商提供的空间支持 动态URL静态化就可以使用,不支持基本上也没有什么办法。对于自己架构服务器的人来说,这本身小才一碟,不许多说。所以,这里主要说如何进行转换。

首先,在服务器的根目录(例如public_html)建立一个文件名为.htaccess的文件。这个文件内容基本如下:


RewriteEngine on
RewriteBase /
RewriteRule ^post/([0-9]+).htm read.php?1
RewriteRule ^post/([0-9]+)_([0-9]+).htm read.php?1&page=2
RewriteRule ^post/([0-9]+)_([0-9]+)_([0-9]+).htm read.php?1&page=2∂=3


看懂了吧?如果懂正则表达式的人,马上明白怎么回事了。不懂得也没有关系,下面是一个常用正则表达式的列表,根据例子,稍微修改,就可以做到了。基本上,针对通常的连接转移,应该都可以很容易实现的。

一个小技巧



引用


正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用

匹配特定数字:
^[1-9]\d*    //匹配正整数
^-[1-9]\d*   //匹配负整数
^-?[1-9]\d*   //匹配整数
^[1-9]\d*|0  //匹配非负整数(正整数 + 0)
^-[1-9]\d*|0   //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*   //匹配正浮点数
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)  //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)  //匹配浮点数
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0   //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0  //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正

匹配特定字符串:
^[A-Za-z]+  //匹配由26个英文字母组成的字符串
^[A-Z]+  //匹配由26个英文字母的大写组成的字符串
^[a-z]+  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+  //匹配由数字和26个英文字母组成的字符串
^\w+  //匹配由数字、26个英文字母或者下划线组成的字符串
评注:最基本也是最常用的一些表达式

来源:网络






If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759