2012-05-23 72 views
0

幾天前我的webhoster更新了apache。此後出現錯誤代碼500。 現在的問題是,根據htaccess語法,apache似乎更嚴格。 錯誤已修復,但我的重定向無法正常工作。我的htaccess中的RegEx無法正常工作

我的htaccess的內容:

RewriteEngine on 
RewriteBase/

RewriteCond %{http_host} ^(www\.)?domain\.de$ [NC] 
RewriteRule ^(.*)$ http://www.domain.de/DE/ [L,R=301] 

描寫的特徵: 我想www.domain.de和domain.de重定向到http://www.domain.de/DE/

問題:

(www\.) 

隨着這部分重定向不工作的。如果我刪除它,它只適用於domain.de而不是www.domain.de。

我在我的htacces中犯了什麼錯誤嗎?我無法找到任何。我搜索了很多,並多次發現這個解決方案。直到現在,我在這個問題上花了很多時間,但我沒有取得任何進展。

+0

您可以選擇使用兩個條件來代替:'RewriteCond%{http_host}^domain \ .de $ [NC,OR]''RewriteCond%{http_host}^www \ .domain \ .de $ [NC]'(請注意OR標誌) – Gerben

+0

您不應該將條件拆分出來 - 使用正則表達式就足夠簡單了。如果我們知道「根本不起作用」是什麼意思 - 它是不是重定向?它會拋出一個錯誤嗎?代碼的使用與所顯示的完全相同(除了真實域名)? – IBBoard

回答

1

這是最有可能的情況下,敏感的問題 - 變量實際上是%{HTTP_HOST},不%{http_host}(見RewriteCond docs

另外,我很驚訝,你沒有得到無限的重定向循環,因爲www.domain .de/DE /將匹配RewriteCond和RewriteRule。

+0

你是對的,它結束於一個循環。在這種情況下,RewriteCond是否必要? –

+0

我不明白爲什麼www.domain.de/DE/匹配我的RewriteCond和RewriteRule?對於我'www.domain.de/DE /'!='^(www。)domain.de $'。 –

+0

好吧,我找到了解決方案。告訴我,如果我是錯的,但是是RewriteRule/RewriteCond重定向到其他域和RewriteMatch在域內重定向?現在我使用'RedirectMatch永久^/$ http:// www.domain.de/DE /',到目前爲止它的工作方式就像我想要的那樣。 –