2015-03-25 69 views
1

注:我知道這是比編程多一點點服務器 但StackOverflow的是.htaccess信息的好地方,我 想通你們中的一些更 美麗的StackOverflowers會有一些有用的建議。很多 謝謝。如何提高跨域頁面調用/加載

我在一個LAMP棧上有多個域和一個cPanel後端。

我有一個域名,www.domainA.com這將最終成爲衆多領域的一個AE(不是字面上的AE,但你的想法),所有這些領域的調用從另一個域,DomainM.com對特定網頁的內容,DomainM.com直接可以通過網絡訪問,但想法是,這絕對不是訪問者的主要來源。

的關鍵,這是有人訪問DomainA.com,並認爲從www.DomainM.com內容,但仍然URL上www.DomainA.com

我目前已經在DomainA.com上的.htaccess中設置了這個值(來自我的服務器人員的建議)。我敢肯定的.htaccess重定向是不是這樣做的最好的方式,但它的工作:

的.htaccess上www.DomainA.com

RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.org\.uk$ [NC] 
RewriteRule ^(referencepage)/?$ http://www.DomainM.co.uk/$1 [P,NC] 

這需要地址www.domainA.org.uk/referencepage並加載服務器數據從www.domainM.co.uk/referencepage而遊客不會去看DomainM.com

所以我有兩個問題:

1)各種測量顯示的時間大約爲30%,這個系統需要2-4秒的時間來加載網頁。我認爲這將是由於處理兩臺服務器和我認爲。htaccess不是處理此聲明的最有效的方式。我們無法訪問httpd.conf。

如何提高此設置的加載速度?

1b)我怎樣才能得到更多的時間加載和顯示頁面的詳細報告? 解決

2)有設置這種形式佈局的,初級曾經反對被顯示在DomainA而不訪問者DomainM「離去」 DomainA一個顯著更高效/有效的方法?

P.S>如果有我想要做的事情的名字,我可以更新問題標題,它可以用於其他人和我自己的參考搜索。乾杯。

UPDATE

我簡化了我的.htaccess一下規則,所以現在他們讀:

#This is to force to use www. 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301] 

#Start biz pages 
#for each business in turn: 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.DomainA.org.uk/businessName$ [NC] 
RewriteRule ^(.*) http://www.Domain.co.uk/$1 [P,NC] 

這樣www.DomainA.org.uk/business負荷www.Domain.co.uk/business(這是改寫上Domain.co.uk是INFACT網址: www.Domain.co.uk/page.php?name=business)。

更新2

我在DomainA現場完成的htaccess:

Options -Indexes 

#force www usage. 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301] 

#Start business pages 
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^www.southwold.org.uk/cranbourne$ [NC] 
RewriteRule ^(.*) http://www.blythweb.co.uk/$1 [P,NC] 

... (all pages references are the same structure as above) ... 

#End business Pages 

#prevent error looping 
RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L] 

<Files php.ini> 
order deny,allow 
deny from all 
</Files> 

回答

0

讓我解釋引擎如何重寫工作。例如,拿http://domainA.com/referencepage。當你請求這個頁面時,你的瀏覽器發送一個請求到Web服務器去檢索它。您的網絡服務器將檢查.htaccess並讀取其重寫規則。

你改寫條件說(我改變了他們匹配domainA.comdomain.com):

RewriteCond %{HTTP_HOST} ^(www\.)?domainA\.com$ [NC] 

這意味着下面的規則僅適用於domainA.comwww.domainA.com的任何請求。

RewriteRule ^(referencepage)/?$ http://www.DomainM.com/$1 [P,NC] 

該行稱更改請求域www.DomainM.com如果用戶已經要求主頁(http://domainA.com/)或referencepage(http://domainA.com/referencepage)。

但您的重寫規則有P標誌,這意味着重寫的URL將通過代理傳遞。

如果同時DomainM.comdomainA.com在同一臺服務器上,我建議你刪除P標誌,以避免(這意味着請求將花費較少的時間)。


關於第一個問題: 如果你想知道需要時間來加載,你可以使用Firebug(火狐)或IE瀏覽器的開發者工具(按F12 )。

IE開發工具: IE Developer Tools

螢火: FireBug

+0

您好感謝您的反饋意見。我沒有意識到Firebug做了一個加載讀數 - 今天早上我用過了。我重寫了我的htaccess代碼(請參閱我的問題 - 更新)。我試圖運行不帶'[P]'標籤的htaccess,但是它改變了URL的域名,這樣就不會給我我想看到的東西。感謝您的反饋,我希望您能從我的更新中進一步提供建議! – Martin 2015-03-29 11:31:04

+0

因爲代理標誌似乎是必需的,所以這些站點不在同一臺服務器上,但是在cPanel上使用同一個整體帳戶。 – Martin 2015-03-29 11:37:04

+0

@Martin ** P **標誌通過代理傳遞請求,無論它們是否在同一臺服務器上。它不會向用戶發送**位置**標題,這是外部重定向所必需的(即** R **標誌的作業)。你能把你的整個htaccess放在這裏嗎? – undone 2015-03-29 21:10:10