2013-03-11 123 views
0

我給舊網站一個新的CMS。現在,我需要3份的.htaccess,但只與他們的2期工程:重定向永久,www重定向和url重寫

  1. 重定向永久
  2. WWW重定向(這不工作)
  3. URL重寫

現在我將解釋更多。 部分0(僅適用於整體)

RewriteEngine On 

第1部分(永久重定向)我用老CMS的網址重定向到新的內容。

RewriteCond %{THE_REQUEST} !/de-old-content.html 
Redirect permanent /de-old-content.html /old/content.html 

第2部分(www重定向)我用來避免重複的內容。

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

第3部分(URL重寫)到 「老/ content.html」 轉換成 「的index.php?住址=舊/內容」

RewriteRule ^(.*)\.html$ index.php?adresse=$1 [l,qsa] 

的[L,QSA]只允許使用$ _GET。

是否可以合併這些零件?

如果我使用第2部分它顯示了

http://www.website.de/abc/def/ghi.html

正確的內容,但也不能加www重定向到

http://www.website.deabc/

我想一定是在本部misstake。

在此先感謝。

+0

它重定向到錯誤的主機?請注意,**重定向**指令不適用於RewriteCond條件,它們是不同模塊的一部分。 – kjetilh 2013-03-11 16:37:21

+0

請使用網址作爲示例,而不是規則。他們一開始並不工作。 – 2013-03-11 16:46:43

回答

1

重定向是mod_alias的一部分,而RewriteCond和RewriteRule是mod_rewrite的一部分。因此,第1部分的RewriteCond會適用於第2部分的RewriteRule,這會使其無法正常工作。

最好避免同時使用重寫代碼和重定向。

RewriteEngine On 
RewriteBase/

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

RewriteRule ^de-old-content\.html$ /old/content.html [L,R=301] 

RewriteRule ^(.*)\.html$ index.php?adresse=$1 [L,QSA] 

PS。爲了保持你的理智,在測試時使用302。一旦一切正常,將它們改爲301。由於您已經使用過301,因此也請清除瀏覽器緩存,以便將所有舊的301從瀏覽器的緩存中移除。

+0

謝謝,這工作正常。 – 2013-03-12 10:15:38