2011-08-15 174 views
1

我目前正在尝试为我正在处理的网站的所有网页做301重定向。问题是,这个网址:我该如何做301重定向,因为重复的网址

http://site.com/cash/ 
http://site.com/credit/ 

http://site.com/cash 
http://site.com/credit 

显示

同一页面这将导致一些重复URL问题并开始分裂你我们的SEO的PageRank的。

我尝试这样做,我的网站上,所有的搜索引擎指向非斜线版本

BTW我有大约90页,我不得不改变...任何想法上实现的好方法这

我该怎么做301重定向在htaccess的做到这一点对我的所有

网页

编辑:

因此,要正确理解。这将做301重定向

# Remove the trailing slash 
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC] 
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L] 

但这是如何排除文件夹1

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

和我会提出,在同一个htaccess的文件或创建的文件夹1目录另一个htaccess文件

回答

2

您可以添加以下到您的.htaccess删除尾随斜线

# Remove the trailing slash 
RewriteCond %{HTTP_HOST} ^(www.)?example\.com$ [NC] 
RewriteRule ^(.+)/$ http://www.example.com/$1 [R=301,L] 


更新

然后,您也可选择添加www

RewriteCond %{HTTP_HOST} ^example.com$ 
RewriteRule (.*) http://www.example.com$1 [R=301] 

或删除它

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 
+0

是否在example.com/上重定向,因为在第三行我看到R = 301,这是301重定向,但它有一个www ...这很重要 – Trace

+0

@Tamer:我添加了一个更新,其中包含两条附加规则可以用来执行或删除'www'。 – stealthyninja

+0

这个逻辑有一个问题,因为所有文件夹example.com/folder1/或example.com/folder2/都不会渲染 – Trace

2

相反比使用301,你可以使用rel canonical link

+0

我这样做以及我正在阅读,这可能会更好地做到这两个......这听起来是对的 – Trace

+0

+1这个答案; @Tamer:我认为(并且自己也使用它)规范链接将成为一种方式,即使只是与其他重定向一起使用。 – stealthyninja

+0

两者都是最好的,因为一些搜索引擎可能不支持规范链接,但实际上只是一个规范链接将是好的。 –

0

你可以使用<不寒而栗>的mod_rewrite相反,如果它是一个Apache服务器...这是disasterously效率低,可能是最好的选择,如果你正在烦恼的是SEO

+2

没有关于为什么_mod_rewrite_是“灾难性的低效率”的信誉良好的源的单一链接,我不知道为什么你在_answer_中抛弃了_comment_。 ಠ_ಠ – stealthyninja

+1

@stealthyninja对不起,这是一个公平的评论,我确实比这个更好...... mod_rewrite的问题在于:1)它必须至少在*每个*请求上评估一个正则表达式,被贩运的网络服务器,特别是共享的盒子,会消耗宝贵的CPU时间。 2)每个请求都通过mod_rewrite *至少运行两次*,如果规则是由不是100%知道怎么做的(参见[L]标志),那么有时更多的CPU需要更多的CPU。所有这些行为都记录在[在mod_rewrite文档中](http://httpd.apache.org/docs/current/mod/mod_rewrite.html)。 – DaveRandom