首页 > WP相关 > 利用301让Wordpress的URL标准化

利用301让Wordpress的URL标准化

2008年7月31日 00:05 Slyar 发表评论 阅读评论

文章作者:Slyar 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

首先我们要明白:什么是一个标准化URL?

这个概念是Google内部提出的,标准化是一个在若干选项中选取最佳URL的过程,这里通常是指主页。

例如,一般人会将以下URL看做是一样的:

* www.slyar.com
* slyar.com
* www.slyar.com/index.php
* slyar.com/index.php

但是从技术角度看,这些URL都是互不相同的。对于上述的URL,Web服务器会返回完全不同的内容。当Google“标准化”特定的URL时,它就会从同类URL中选出看起来最具代表性的一个。

现在我们就利用LINUX主机的.htaccess文件来使得我们的URL标准化。

首先是我的根目录,在根目录下上传以下内容的.htaccess文件,这个文件的地址是/.htaccess。这样当访问slyar.comwww.slyar.com/index.phpslyar.com/index.php时,由于301重定向的作用,所有的链接都会指向www.slyar.com,有兴趣的朋友可以点击链接测试我的网站首页。

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^slyar.com [NC]
RewriteRule ^(.*)$ http://www.slyar.com/$1 [L,R=301]
rewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
rewriteRule ^index\.php$ http://www.slyar.com/ [R=301,L]

如果你的Wordpress就在根目录下,那么将上面的内容加到Wordpress提供的.htaccess文件头部就行了。

其次就是我的Wordpress了,因为我的Wordpress安装在根目录下的/blog/里,所以我需要再次设置Wordpress提供的.htaccess文件,加入301转向代码的.htaccess文件如下,这个文件地址是/blog/.htaccess。这样当访问slyar.com/blogwww.slyar.com/blog/index.phpslyar.com/blog/index.php时,由于301重定向的作用,所有的链接都会指向www.slyar.com/blog/,有兴趣的朋友可以点击链接测试我的博客首页。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{http_host} ^slyar.com [NC]
RewriteRule ^(.*)$ http://www.slyar.com/blog/$1 [L,R=301]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /blog/index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.slyar.com/blog [R=301,L]
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
分类: WP相关 标签: , ,
  1. 2009年5月6日10:26 | #1

    @, 应该是可以的。mu的也许某些规则要改一下...

  2. 匿名
    2009年5月6日02:10 | #2

    你好,请问这篇文章中的.htaccess文件能用于apache1.x吗?我在wordpress mu 2.7.1是中试验好像没有效果似的,请指教,谢谢!

  3. 2009年2月21日11:56 | #3

    @Slyar

    明白了,多谢!

  4. 2009年2月20日22:36 | #4

    @carp, 把www.slyar.com/index.php也转向到www.slyar.com

  5. 2009年2月20日22:29 | #5

    学习了,但是还有个问题:

    rewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    rewriteRule ^index\.php$ http://www.slyar.com/ [R=301,L]

    在第一种方法中,这两行是做什么的?我去掉这两行也能正常301转向,不知道它们起到什么作用……

  6. 2009年1月15日13:33 | #6

    不错
    可惜我的是win主机

  7. 匿名
    2008年12月2日15:33 | #7

    你再深入研究一下,就会发现你这是多此一举
    写以下这些就够了,其他那些都是多余

    RewriteEngine On
    RewriteBase /blog/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /blog/index.php [L]

    Slyar 回复:

    呵呵,你可以自己试试啊~

  8. 2008年10月3日21:43 | #8

    学习一下,谢谢分享

    冰水 回复:

    一起学习!^_^

bnuep:0801010047