2012-08-05 16 views
0

我試圖重寫任何具有非空REQUEST_URI到另一個域的URL,同時保留REQUEST_URI。這個想法是,只有www.example.com存在於這個域上,任何其他請求都應該去www.example2.com。如何使用.htcaccess將非基本URL重寫到另一個域?

我已驗證www.example.com具有'/'作爲其REQUEST_URI。

例如

www.example.com -> should not be rewritten 
www.example.com/test.php -> should be rewritten to www.example2.com/test.php 
www.example.com/test2.php?id=123 -> should be rewritten to www.example2.com/test2.php?id=123 

[更新] 我試圖比較REQUEST_URI爲「/」,但重定向一切:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^(.+)$ http://www.example2.com/$1 [L,QSA] 

我試圖檢查文件或目錄存在,那麼它重定向但就是重定向連底座網頁(www.example.com)

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://www.example2.com/$1 [L,QSA] 

我試圖檢查是否有斜線後的內容,但沒有重定向:

RewriteEngine on 
RewriteRule ^.+/(.+)$ http://www.example2.com/$1 [L,QSA] 

任何人都可以想出一個工作解決方案呢?它似乎應該很簡單,但我似乎無法得到它的工作。

謝謝。

解決方案:

FYI:我最終的解決方案與打算是:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ http://www.example2.com/$1 [R,L,QSA] 

的原因是,如果我有www.example.com的所有圖像,他們會重寫到www.example2.com。 [R]是導致基本URL重定向問題正常工作的原因。感謝龐恰指出了這一點。

回答

2
RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^(.+)$ http://www.example2.com/$1 [R,L,QSA] 

沒有!,你RewriteCond是一個積極的比賽,不是消極的。 此外,添加R標誌強制apache發送重定向到瀏覽器

+0

對不起,我寫錯了 - 我其實有你的迴應,但這並不奏效。 – 2012-08-05 14:59:44

+0

其實它是你添加的R修復它! – 2012-08-05 15:01:59

2

我覺得你的第一次嘗試是差不多好了,你只需要否定改寫條件是這樣的:

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/$ 
RewriteRule ^(.+)$ http://www.example2.com/$1 [L,QSA,R=301] 
+0

對不起,我寫錯了 - 我實際上有你的迴應,但這是行不通的。 – 2012-08-05 15:00:34

+0

是的失蹤是R的標誌...我忘了它 – Oussama 2012-08-05 15:03:33

相關問題