2011-05-30 64 views
0

我需要在.htaccess中重定向http://oldsite.com/some/contenthttp://newsite.com/some/content,但只有那個頁面(好,兩頁,具有相同的想法)。在Apache 301重定向中設置主機和路徑

從我所看到的,301個重定向不採取主機,只有路徑,在第一個參數,並

Redirect 301 /some/content http://newsite/some/content 

是行不通的,因爲oldsite.com是ServerAlias的newsite.com(可能不理想,但那部分不在我手中),並且似乎上面的規則導致重定向循環。

完成此操作的最佳方法是什麼?我無法使用PHP解決方案,因爲重定向需要在另一個規則進一步下載到相同的.htaccess中之前執行。

回答

1

您可以設置環境變量指認現場,例如:

SetEnvIf default-site^site=new 
SetEnvIfNoCase Host ^oldsite\.com$ site=old 

...和使用mod_rewrite來執行條件重定向:

RewriteCond %{ENV:site} =old [NC] 
RewriteRule ^(.*)$ http://newsite.com%{REQUEST_URI} [NE,R=permanent,L] 
+0

謝謝,阿爾瓦羅。我不知道環境變量;我會閱讀這些。 +1教我新的東西。 這是最後的工作(我需要它只能工作兩頁,而不是執行任何其他頁面)。 RewriteCond%{HTTP_HOST}^oldsite \ .com [NC] RewriteCond%{REQUEST_URI} ^/some/content。* RewriteRule^/(。*)http://newsite.com/$1 [L,R ]'我想我可以在你的代碼中添加上面的第二個RewriteCondition。今晚稍後將探討。 – 2011-05-30 20:42:31