2011-07-14 69 views
0

我正在遷移大型站點(對每個頁面進行重大更改),並且希望將測試用戶組從每個頁面自動從當前站點重定向到新站點完成了。如果存在URL,則使用Apache mod_rewrite進行條件重定向

什麼

www.mysite.com/admin/somefile.php 

將成爲

admin.mysite.com/somefile.php 

由於每個頁面被遷移到新的網站,我想從一個特定的IP地址的用戶被自動重定向到它。這看起來像RewriteCond的'-U'(現有URL)標誌。 (爲www.mysite.com)mod_rewrite的語句是沿

RewriteEngine On 
    RewriteCond %{REMOTE_ADDR} 123\.123\.123\.123   # for test users only 
    RewriteCond http://admin.mysite.com/$1 -U    # if new page exists 
    RewriteRule /admin/(.*) http://admin.mysite.com/$1 [R=302,L] # then redirect 

不過線的東西,這似乎並沒有工作 - 也許是因爲$ 1個參數被被定義前引用了?

任何人都可以建議如何實現?

謝謝,克里斯

+0

是的,你可以在那裏引用$ 1 - 當RewriteCond被評估時(RewriteRule的模式被首先評估)它將被知道。我只是不確定'-U'是以這種方式工作(如果admin.mysite聲明爲單獨的網站)。在任何情況下 - 我建議啓用重寫調試('RewriteLogLevel 9')並檢查重寫日誌中的確切細節。 – LazyOne

回答

-1

你可以用這種方式來操縱URI

RewriteCond %{REQUEST_URI} ^/admin/(.*)$ 
RewriteRule .* http://admin.mysite.com/#1 [R=302,L] 

希望這個作品。順便說一句,你可以在這裏測試你的在線改寫http://martinmelin.se/rewrite-rule-tester/

+0

無論頁面是否被轉換到新的網站,這肯定會嘗試重定向到新的網站?這不會滿足我的需求。不管怎麼說,還是要謝謝你。 – ChrisV

1

謝謝,LazyOne - 你給了我信心追求它(如果你讓它成爲一個答案,我會接受它)。

我認爲這個問題只是使用/ admin而不是^ admin;我最後的mod_rewrite的語句是:

RewriteEngine On 
    RewriteCond %{REMOTE_ADDR} 123\.123\.123\.123   # for test users only 
    RewriteCond http://admin.mysite.com/$1 -U    # if new page exists 
    RewriteRule ^admin/(.*) http://admin.mysite.com/$1 [R=302,L] # then redirect 

...這似乎在新的網站正確投放的頁面,如果它存在,否則供應來自舊網站的頁面。

相關問題