2011-08-11 204 views
2

OK ......如何URL重定向到另一個

我已經安裝的東西,這樣當被請求如下頁面(瀏覽器的用戶和服務器)

http://www.visualise.ca/?_escaped_fragment_=corona

網站返回以下的這個(HTML快照)的含量

http://www.visualise.ca/corona

其中 '暈' 隨時更改,其變化取決於不g在用戶或服務器請求的頁面上。它也可能是

http://www.visualise.ca/?_escaped_fragment_=anne-au-cherry

重定向到

http://www.visualise.ca/anne-au-cherry

感謝

UPDATE: OK讓我更清楚。我使用AJAX來加載我的Wordpress帖子,並且在加載時它們看起來像這樣的http://www.visualise.ca/#!/corona。但它不能被Google抓取,請求將它們作爲http://www.visualise.ca/?_escaped_fragment_=corona提供服務,所以我修改了Wordpress來執行此操作。現在,Google可以抓取我的網頁併爲其內容編制索引,並訪問http://www.visualise.ca/corona處的HTML快照。

問題是,當我將http://www.visualise.ca/#!/corona鏈接粘貼到Facebook時,它似乎讀取http://www.visualise.ca/?_escaped_fragment_=corona並且無法讀取內容。但是,當我直接粘貼http://www.visualise.ca/?_escaped_fragment_=corona鏈接它的作品,它讀取http://www.visualise.ca/corona(The HTML)。

所以我想也許如果我可以將http://www.visualise.ca/?_escaped_fragment_=corona重定向到http://www.visualise.ca/corona它會解決我的問題。

這是現有的.htaccess文件

#--- DH-PHP handlers --- 
AddHandler fastcgi-script fcg fcgi fpl 
AddHandler php-fastcgi .php 
Action php-fastcgi /cgi-bin/dispatch.fcgi 


# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 
+0

聽起來就像你已經掌握了一切,然後。有問題嗎? – Phil

+0

當我將http://www.visualise.ca/?_escaped_fragment_=corona粘貼到Facebook時,我可以看到http://www.visualise.ca/corona的內容出現在預覽中,但當我輸入http:/ /www.visualise.ca/?_escaped_fragment_=corona在瀏覽器地址欄中,然後按回車。 – Gab

回答

1

很多人做的常見錯誤是試圖匹配整個URL,包括查詢字符串。現實情況是:匹配URL時,模式被應用到它的路徑部分並且查詢字符串必須單獨匹配

使用此規則:它將發出301永久重定向從這種URL /?_escaped_fragment_=corona/corona(其中corona可以是任何東西)。

RewriteCond %{QUERY_STRING} ^_escaped_fragment_=([^&]*) 
RewriteRule .* http://%{HTTP_HOST}/%1? [R=301,L] 
+0

謝謝,它回答我的問題。但我試圖用http://visualise.ca/#!/corona做同樣的事情,但似乎並不奏效。 RewriteCond%{QUERY_STRING} ^#!/([^&] *) RewriteRule。* http://%{HTTP_HOST} /%1? [R = 301,L] – Gab

+0

@Gab它不會工作..作爲散列(片段標識符 - 包含此符號本身的##後的所有內容)僅爲**客戶端**並且從不首先發送到服務器地點。 – LazyOne

0

我想你的問題實在是「我怎麼做到這一點的重定向?」。所以答案在這裏:

我有三種方法可以考慮,每種方法都有細微差別。

  1. 做重定向服務器端 這基本上意味着你設置你的迴應重定向報頭。在php中,您可以使用header函數來完成此操作。它也可以執行delayed redirect,在這種情況下,您需要擔心頁面的內容。

  2. 這樣做使用客戶端使用HTML的"http-equiv" meta tags。這樣頁面總是被加載。示例here

  3. 通過javascript來做到這一點。那就是你基本的document.location.href的東西。你需要找出一種方法將參數傳遞給javascript,或讓你的JS從地址url中讀取它。

自從我向您展示這樣做的3種方式,我真的希望這是你在找什麼:

以上:看到評論苯磺酸之後


更新方法將導致URL更改。如果您不希望URL更改,但在原始頁面上顯示其他頁面的內容,則可以使用iframe(baaaad)執行該操作,或者執行正確的操作並設置URLrewriting

:)

+0

我更新了我的問題。 – Gab

0
RewriteEngine on 
RewriteRule \?_escaped_fragment_=(.*?) /$1 [L,R=301] 

是你在找什麼呢?

+0

我得到500內部服務器錯誤 – Gab

+0

我添加了現有的.htaccess文件到我的問題 – Gab

+0

@Gab:編輯。對不起 – genesis

相關問題