2011-01-12 17 views
2

當遊客走了,說,:的.htaccess非www到www URL重定向擦除超出基地的網址的路徑

的http:// website.com/dir/dir2/file.html

我的重寫清除了基本URL以外的路徑,並使用www將它們重定向到主頁。在前面:

的http:// www.website.com/

我怎樣才能防止出現和發送遊客到網頁,而不是他們的請求的URL的剝離?僅供參考,有問題的網址存在。

Thanx!

回答

3

包含在這樣的重寫結束的文件/路徑信息:

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

我放棄了在重寫後:重寫規則*的index.php [L],但它仍然重定向到基地網址。 RewriteRule會引起大驚小怪嗎?你建議的代碼應該在index.php RewriteRule之前?謝謝 – tigre 2011-01-12 23:25:27

+0

這應該永遠是你的第一條規則。它是我所有其他規則的首要條件,因爲它需要先到先得。一旦網站已重定向到完全限定的域名,此第一條規則中的條件將不再被滿足,因此它將被繞過,其餘規則將生效。 – dadwithkids 2011-01-13 12:59:20

3

僅供參考,這是一個Magento站點。

在.htaccess,後

#RewriteBase /magento/ 

它後,我放在自己的臺詞:

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

和它的作品。有孩子的爸爸也有對的,只是不知道第二行是什麼。

1

大多數人需要RewriteBase集,所以嘗試:

RewriteEngine on 
RewriteBase/
RewriteCond %{HTTP_HOST} !^(?:www\.your-live-domain\.com|staging\.domain\.com)$ [NC] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteRule .* http://www.your-live-domain.com/$0 [L,R=301] 

使用301,使其永久