2012-07-11 127 views
1

我有一個應用程序,我用rails重寫過。舊的應用程序是在PHP中。如何將所有php請求重定向到一個不同的子域

我需要將所有的PHP請求重定向到一個子域old.example.com(我已經把我的舊應用程序在那裏運行),以便舊的鏈接仍然可以工作。我相信所有的鏈接都有一個「.php」,我的新網站沒有這個鏈接。所以它可以被用作重定向的條件。

我已經計劃使用apache RedirectMatch。所以像這樣:

RedirectMatch \.php http://old.example.com 

應該關閉。我相信。我只是不知道如何將請求路徑傳遞給重定向規則。

或者如果有人有一個更好的主意該怎麼做?

+0

我發現有在Apache2的一個REQUEST_URI變量。所以我需要將其添加到重定向網址。什麼可能是這樣做的語法? – Mika 2012-07-11 13:33:09

+0

我試過'RedirectMatch永久^。* \。php。* $ http://old.example.com% {REQUEST_URI}'但沒有得到那個工作。所以我按照Alex W.的建議將重寫引擎投入使用。 – Mika 2012-07-11 17:13:51

回答

1

使用Apache國防部重寫,你可以使用下列內容:

RewriteEngine On 
RewriteBase/
RewriteRule ^.*\.php.*$ http://old.example.com/index.php [R=301,NC] 

如果要真正地插入他們試圖在重定向URL訪問該頁面:

RewriteEngine On 
RewriteBase/
RewriteRule ^/?(.*)\.php.*$ http://old.example.com/$1.php [R=301,NC] 

$1將插入任何與正則表達式在括號中相匹配的東西。

對於GET參數:

RewriteEngine On 
RewriteBase/
RewriteRule ^/?(.*)\.php(.*)$ http://old.example.com/$1.php$2 [R=301,NC] 
+0

如果URL中還有一些GET參數,那麼該怎麼辦?我認爲他們不會被納入這些解決方案。但是可以在.php之後包含第二個(。*)? – Mika 2012-07-11 13:41:21

+0

@Mika更新了GET參數。你是對的,他們可以包含第二對括號。 – 2012-07-11 13:43:09

+0

in http://www.webmasterworld.com/forum92/4307.htm我讀到'RewriteBase'只能在.htaccess文件中定義。我將把這個''標籤放入服務器配置文件中。我應該排除'RewriteBase'嗎? – Mika 2012-07-11 16:12:00

相關問題