利用301让Wordpress的URL标准化
文章作者: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.com、www.slyar.com/index.php、slyar.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/blog、www.slyar.com/blog/index.php、slyar.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
@, 应该是可以的。mu的也许某些规则要改一下...
你好,请问这篇文章中的.htaccess文件能用于apache1.x吗?我在wordpress mu 2.7.1是中试验好像没有效果似的,请指教,谢谢!
@Slyar
明白了,多谢!
@carp, 把www.slyar.com/index.php也转向到www.slyar.com
学习了,但是还有个问题:
rewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
rewriteRule ^index\.php$ http://www.slyar.com/ [R=301,L]
在第一种方法中,这两行是做什么的?我去掉这两行也能正常301转向,不知道它们起到什么作用……
不错
可惜我的是win主机
你再深入研究一下,就会发现你这是多此一举
写以下这些就够了,其他那些都是多余
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
Slyar 回复:
十二月 2nd, 2008 at 23:03
呵呵,你可以自己试试啊~
学习一下,谢谢分享
冰水 回复:
十月 30th, 2008 at 00:02
一起学习!^_^