We stand alone,
together.
- BAND of BROTHERS
url rewrite 的善后工作
标签 ( WebDev ): mod_rewrite
RewriteEngine On
RewriteRule ^entry/([0-9]+)$ blog/entry.php?id=$1&avoidrepeat=1 [L]
RewriteCond %{QUERY_STRING} ^id=([^&]+)$
RewriteRule ^blog/entry\.php$ /entry/%1? [R=301,N]
由于一开始的时候主机并不支持 mod_rewrite ,所以日志的 url 都是带 ? 参数的动态 url 。这次决定把该 SEO 的都给 SEO 起来,于是在根目录下加了这个 .htaccess 文件。
但想要让原来已经被 Search Engine 收录的动态 url 自动转到新的静态化的 url 上来却颇费功夫。本来以为直接加一条 R=301 的 RewriteRule 就行了,可实际上 RewriteEngine 对于 rewrite 之后的最终url与初始url完全一样的逻辑会直接给 Ignore 掉,所以必须加上一个无意义的 &avoidrepeat=1 参数来让 RewriteEngine 认为这是两个不同的请求。另外对于 ? 后面的参数字符串必须在 RewriteCond 里面来匹配而不是直接在 RewriteRule 匹配。
经过这样的处理之后,无论是通过老式的 entry.php?id=XXX 方式还是经过静态化的 /entry/XXX 方式来访问,最终都会定位到 /entry/XXX 这个静态化的 url 上,对于 Search Engine 来说应该可以更快的根据 R=301 的状态码来更新它的索引库。
This Entry was Last Modified on 2007-05-28 14:17
没有评论.
日志存档
ac米兰 ajax apache api blog blogchina cctv css dhtml download dreamhost dvd encoding error feeds firefox flash framework gmail google google_analytics google_talk http ide ie ie7 javascript jquery linux maxthon mod_rewrite movies msn mvc mysql oracle php pippo pivot rss shell socket sohu spammers svn vs web web2 webclient weblogic windows xml zend 阿根廷 安全漏洞 奥运 备份 变形金刚 程序员 地铁 浮动层 搞笑 工具 冠军杯 管理 火箭 进程 客户端 篮球 厉 旅行 命令行 欧洲杯 人生 设计模式 世界杯 数据库 搜索引擎 算法 图片 无极 系统优化 笑话 姚明 游戏 源代码 周杰伦 字符编码 足球 浏览器

