2010-11-24 56 views
11

我申請以下mod_rewrite規則Apache2從非WWW重定向到www:的mod_rewrite和雙斜線問題

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

我有兩個問題:

1)有一個雙斜線問題:

任何提示解決它?

2)我的配置適合搜索引擎優化嗎?

+0

它位於哪裏? – Gumbo 2010-11-24 19:56:40

回答

30

修正了:

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

因爲$1默認包含索引路徑/

4

其實,你將永遠有雙斜線由於

RewriteRule ^(.*)$ http://www.mydomain.com/ $1 [R=301,L]

與REQUEST_URI(你是匹配的)通常包含起始斜槓的事實相結合。你可以嘗試的是RewriteRule ^(.*)$ http://mydomain.com $1,然後發送一個破損的HTTP請求GET foo HTTP/1.0,看看Apache是​​否正確處理它。

1

那是因爲根路徑是/,並要附加任何你在RewriteRule得到(第一種情況下正常工作,因爲它不匹配所以不進行改寫的條件)。

你可以嘗試這樣的事情:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC] 
# for the home page 
RewriteRule ^/$ http://www.mydomain.com/ [R=301,L] 
# for the rest of pages 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] 
15
 
RewriteRule ^\/?(.*)$ http://www.mydomain.com/$1 [R=301,L] 
+0

這個工作非常好,謝謝 – Pere 2013-12-18 11:30:47

1

把斜線插入模式應該解決這個問題:

RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]