2014-10-08 56 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