免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2095 | 回复: 5
打印 上一主题 下一主题

结合Mod Rewrite以及PHP生成优化的SEO url [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-11 13:44 |只看该作者 |倒序浏览
以下文章由360weboy撰写, 原文地址:结合Mod Rewrite以及PHP生成优化的SEO url。 360weboy – 专注php web开发, web前端开发, 打造专业的php社区。希望本篇文章对你有所帮助,感兴趣的话可以加入360weboy的qq群-197642724,或者关注360weboy的新浪或者腾讯微博,大家在一起分享讨论开发中的技术以及思想,如发现文章有什么不对之处,请在评论中及时指出,如果确实有问题,我会及时纠正。


虽然我不是一个专业的做seo优化的,但是在我接触到的一些项目中,知道了一些实现seo的方法。要生成对于用户以及搜索引擎友好的url链接,据我目前所了解的有两种方式:

1. 结合Mod Rewrite以及PHP生成优化的SEO url

2. 在应用程序的前端控制器中通过路由来解析seo化的url,从而定位到具体的针对此次请求的控制器中进行处理

这边文章主要介绍 – 结合Mod Rewrite以及PHP生成优化的SEO url的方式。对于动态网站来说,静态化的url比较有利于搜索引擎收录,是站点seo比较重要的一部分。

首先让我们来看一个搜索引擎比较讨厌的常规的url – http://www.yoursite.com/product.php?productid=2&categoryid=3

很明显,当用户看像以上的一个url的时候,根本弄不清楚当前在看那个产品的信息。所以,我们有必要将改url转变为以下形式的链接:

http://www.yoursite.com/product/13/3/2-GB-MP3-player.html

用户看到以上的url的时候,至少可以知道当前看的产品是2GB的MP3播放器。我们使用Apache Mod Rewrite就可以实现上述url的转变。

我常常将这个转变过程概括为: 正在找什么以及要到哪去。

什么是Mod Rewrite?

维基百科上的解释如下:

URL重写 (URL Rewriting) 是一种REST的相关技术,它可以在 Web Server 中,针对用户所提供的 URL 进行转换后,再传入 Web Server 中的程序处理器。

示例

最常见的用法,就是将一组 URL 层次结构字符串,转换成带有 query string 的 URL,或是反向转换,例如:

http://www.somebloghost.com/Blog ... Month=12&Day=10

经过 URL 重写后,可以变成:

http://www.somebloghost.com/Blogs/2006/12/10/

另一个例子,下面的 URL:

http://www.somehost.com/Blogs/2006/12/

经过 URL 重写后,可转换成:

http://www.somehost.com/Blogs.aspx?year=2006&month=12

因此,用户可以使用较直接的方式来输入 URL(这也是 REST 的主要目的),是搜索引擎优化(SEO)的作法之一。而应用程序开发者可以利用这个机制来将参数隐藏起来,可避免让网络上的恶意用户收集到有利于发动攻击的信息。

我个人的理解就是,在用户通过一个url访问你的程序的时候,web服务器会检查这个请求的链接是否符合一定的转换规则,并且根据规则的定义对该url进行转换。这意味着,请求最终还是被product.php进行处理,但是用户或者搜索引擎看到的是完全不同的url。

重写URL的步骤

目前为止, 我们已经明白了什么是Mod Rewrite。接下来,我们来具体学习下如何进行重写url。第一步就是要创建一个.htaccess的文件并且将该文件放在你站点的根目录下(只适用于Linux的web服务器,对于win类型的貌似是不起作用的)。 接着,你需要在.htaccess加入下述代码:

  1. RewriteEngine on
  2. RewriteRule ^article/([0-9]+)/([0-9]+)/(.*?).html$ /article.php?articleid=$1&categoryid=$2
复制代码
我们来看下这行代码的具体意思。

RewriteEngine on

待续。。。。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-11-11 20:52 |只看该作者
重写已经是上个年代的招数了, 这个年头直接根据URI做dispatch了, 对于PHP来说就是需要web server支持pathinfo.

论坛徽章:
0
3 [报告]
发表于 2012-11-11 23:23 |只看该作者
不错,但是有些应用程序不是唯一一个入口,不具备在前端控制器里进行dispatch, 请指教在这种程序里怎么实现?我要写的第二种方式,按照你的说法,就是这个时代的。

本人从不鄙视所谓的过时的技术,只有改进,没有过时。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-11-12 10:57 |只看该作者
对于CGI/FCGI来说, 它只是被通知了环境变量URI是/xx/yy/zz/kk, Query是:query1=xxx&query2=yy, 怎么来操作URI是CGI/FCGI自己的事情,应用程序不管是自己写的C/C++ FCGI还是任何其他CGI协议, 都是可以做URL路由的。

论坛徽章:
0
5 [报告]
发表于 2012-11-15 09:34 |只看该作者
Apache所有平台的Rewrite都可以生效.htaccess规则;IIS 7以后的版本对Rewrite支持也不错.
开启.htaccess的效率不怎么好,Apache官方手册都建议尽量避免使用它;个人使用.htaccess一般在测试环境,生产环境Rewrite都写在配置文件里。

论坛徽章:
0
6 [报告]
发表于 2012-11-15 15:44 |只看该作者
对的啊。 只是写一种方式,不是说肯定这种方式。 大部分时间用的是再前端控制器里分发到具体的command.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP