2012-01-10 53 views
0

我怎麼能結合這個改寫塊:的.htaccess,結合兩個

RewriteCond %{HTTP_HOST} ^81\.216\.147\.82 [OR] 
RewriteCond %{HTTP_HOST} ^192\.168\.1\.9 [OR] 
RewriteCond %{HTTP_HOST} ^domain\.nu 
RewriteRule (.*) http://www.domain.nu/$1 [R=301,L] 

有了這一個?

RewriteCond $1 ^(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule ^(.*)$ /index.php/$1 [L] 

首先一個剛剛從IP重寫域。第二個做到這一點的index.php將被稱爲全自動,像domain.nu/blogg會經過的index.php

+0

只需將一個接一個放在.htaccess文件中?或者,如果你的意思是結合這兩條規則,好奇你爲什麼要這樣做? – 2012-01-10 21:02:18

+0

這將導致無限的重定向循環:/ – 2012-01-10 22:45:35

回答

0

如何通過更換第一改寫:

RewriteCond %{HTTP_HOST} ^(81\.216\.147\.82|192\.168\.1\.9|domain\.nu) 
RewriteCond $1 ^(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule (.*) http://www.domain.nu/index.php/$1 [R=301,L] 

RewriteCond %{HTTP_HOST} ^(81\.216\.147\.82|192\.168\.1\.9|domain\.nu) 
RewriteCond $1 ^index.php/(blogg|tjanster|om-oss|kontakt|P[0-9]{2,8}) [NC] 
RewriteRule (.*) http://www.domain.nu/$1 [R=301,L] 

第一把手的情況下index.php是隱式的,第二個是明確的。兩個cond集是互斥的,所以梯形邏輯工作。 (該條件是一個正則表達式,因此使用regexp語法而不是[OR]更簡單。)

+0

這不會工作:/,當我導航到domain.nu/blogg它doesnt調用index.php,因爲服務器返回404找不到:( – 2012-01-11 20:08:34

+0

好吧,我剛剛跑這些在我的測試虛擬機(調整)爲我的IP等,他們爲我工作。我檢查rewrite.log上的重寫,他們的工作正如我所料。你有訪問rewrite.log – TerryE 2012-01-13 00:20:10

+0

而且你可以啓用重寫日誌您是否還需要檢查www.domain.nu服務器上的access.log/vhost.log以查看實際改寫的內容? – TerryE 2012-01-13 00:21:59