2014-10-08 57 views
0

我是一个新的编写htaccess规则。我想尽可能简化网站中的网址。如何避免与htaccess重复的内容映射网址

假设我想为根域“映射”/ home /目录。因此,http://www.domain.com将显示来自/ home /目录的内容而不更改网址。

此外,我不希望用户/谷歌访问:http://www.domain.com/home/,因此,如果有人转到该URL,我想将它们重定向回我的根域:http://www.domain.com

我看到,谷歌是索引两个目录与​​相同的重复内容。 http://www.domain.com http://www.domain.com/home/

我能做些什么来阻止它吗?我不想使用robots.txt,因为我听说这是一种不好的做法。

RewriteEngine on 
RewriteBase/

# Redirect /home/ dir to 'www.domain.com' 
#RewriteCond %{REQUEST_URI} ^/home/$ [NC] 
#RewriteRule ^(.*)$/[R=301,L] 

# Show /home/ dir for 'www.domain.com' 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ /home/$1 [L] 

如果我启用此代码中的所有行,我会得到一个永不结束的重定向循环。

此外,我在尝试添加“seo friendly”网址时遇到同样的问题。我试图将“http://www.domain.com/thread/thread-name/”映射到“http://forum.domain.com/thread-name/”,尽管它工作正常,但我仍然有2个重复的URL显示相同的内容。

我想听听避免搜索引擎索引重复内容的最佳做法。我应该重定向到404吗?我不想使用robots.txt来实现这一点,因为有很多文件/目录组合,并且它不适合我的目的。

非常感谢!

回答

2

取而代之的是:

# Redirect /home/ dir to 'www.domain.com' 
#RewriteCond %{REQUEST_URI} ^/home/$ [NC] 
#RewriteRule ^(.*)$/[R=301,L] 

尝试:

# Redirect /home/ dir to 'www.domain.com' 
RewriteCond %{THE_REQUEST} \ /+home/([^\?\ ]*) 
RewriteRule^/%1 [R=301,L] 
+0

非常感谢这样一个伟大的解决方案!它效果很好。我想知道我现在应该怎么做才能从谷歌索引中删除“/ home /”url,以便我没有重复的内容。我会继续搜索,谢谢! – Ramiro 2014-10-08 15:40:54