2012-01-07 46 views
2

我有一個url是www.blahblah.com/something如何做一個.htaccess重寫來掩蓋轉發的URL?

這是一個遠程服務,我沒有任何關係。

如何使用的.htaccess我自己的服務器上,並從www.myurl.com改寫,使顯示的內容是所有www.blahblah.com/something,但地址欄還是讀取www.myurl.com

回答

0

不,這是不可能的與外國網站。

但是,您可以在本地執行此操作。例如,看看這個htaccess文件:

RewriteEngine On 
Options +FollowSymlinks 
RewriteBase/
RewriteRule ^some/test/url$ index.php?some=test&or=url [L] 

在這種情況下,如果你訪問www.myurl.com/some/test/url它會顯示這樣的瀏覽器,但你的服務器就可以在你的文檔根目錄的參數some=test&or=url運行index.php

這隻適用於服務器上運行的腳本。您無法在其他服務器/域上執行此操作。如果你嘗試這樣做(例如,通過將index.php?some=test&or=url更改爲http://www.blahblah.com/something),那麼apache只會將瀏覽器重定向到該URL。

htaccess(Apache)與用戶建立連接,並且用戶期待來自您的服務器的響應。如果您嘗試從另一臺服務器加載內容,Apache必須建立該連接,加載生成的HTML或其他內容,然後將其傳回給您。但是這會變得混亂,特別是當你進入cookie,SSL,JavaScript等。

我的問題是:你爲什麼需要這個?我不確定我是否明白爲什麼這是一個問題,如果用戶的網址更改。如果它是一種你無法控制的服務,爲什麼僅僅將它發送給它是如此糟糕?

您可能希望研究更多關於緩存服務器的知識,或者使用PHP將http呼叫發送到您想要的服務器並「傳遞」內容,假設您知道毫無疑問Cookie不會存在問題或SSL或其他。但是,爲什麼不把它們發送到正確的URL呢?

+0

嗯......好了myurl.com是我的服務器。外部服務不夠完善,我們希望在我們的域名下建立互聯網存在....我相信我以前見過它......但也許不是...... – Angela 2012-01-08 01:05:06

+0

我已經做了很多我們提供遠程服務的東西,但它總是在PHP中,通過某種類型的REST-ful調用或API。這是不可能在Apache/htaccess級別上完成的,但是使用相當數量的編程將是一個更復雜的解決方案。 – cegfault 2012-01-08 19:47:07

+0

沒有具體瞭解外部服務是什麼,你究竟想要做什麼,以及對外部服務(特別是後端)有多少控制/訪問權限,恐怕我不能做更多幫助:/ – cegfault 2012-01-08 19:48:21

0

mod_rewrite是正確的方法。

  1. 確保它是mod_rewrite在我們的apache配置中被激活。
  2. 添加到htaccess的

    RewriteEngine敘述在
    RewriteBase/
    的RewriteCond%{HTTP_HOST}^WWW \ .blahblah \ .COM $ [NC]
    重寫規則^(。*)$ http://www.myurl.com/ $ 1 [ R = 301,L]

RewriteCond定義條件。在這種情況下,如果http_Host是www.blahblah.com
RewriteRule定義了要執行的操作。在這種情況下轉發到您的目標域。$ 1您的網址其餘

更多詳細信息,你可以在這裏找到:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

+0

這是一個重定向或重寫...換句話說,在導航wlil它顯示http://www.myurl.com,但服務的頁面將從www.blahblah.com/something/something ? – Angela 2012-01-08 01:05:44

+0

我注意到你只是用URI進行了重寫,而不是用blahblah.com/something else的目錄。 – Angela 2012-01-08 01:06:09