2011-08-08 63 views
0

我有一個窗體的網頁金字塔的應用程序。我在表單的POST後使用window.location = XXX,但我被告知這不是SEO友好的。與jQuery和金字塔的URL重定向?

因此,我試圖在服務器端做一個重定向。我所做的是在mydomain.com/redirect的金字塔應用程序中添加一個視圖。去這個地址返回301到目標頁面:

return HTTPMovedPermanently(location=location) 

現在,在我的網頁,我加了一個jQuery POST到/重定向頁面。看着螢火蟲,這篇文章確實發生了,它得到了301回來,然後我的瀏覽器GET成爲目標頁面,但是沒有實際重定向到它 - 我錯過了什麼?

+0

如果可能,請對任何重定向使用mod重寫。 – Calum

回答

0

jQuery在收到3xx響應時不會重定向瀏覽器。它只會遵循AJAX請求中的重定向。這是XmlHttpRequest的標準行爲,我非常肯定它不能改變。

你想要的不是提交你的表單並使用HTTP重定向,或者使用JavaScript並在接收到肯定響應時使用window.location。

做這種事情的通常方法是假設客戶端首先沒有JavaScript。然後,一旦所有內容都可以在沒有JavaScript的情況下運行,您就可以在JavaScript上添加JavaScript,併爲擁有JavaScript的用戶提供更好的體驗。這就是說,如果你打算在表單提交後重定向客戶端,你可以簡單地不使用AJAX。如果你有驗證要做,你可以在JavaScript中阻止表單提交,直到表單有效。

此外,表單提交後重定向的狀態碼是通常302,而不是301.

+0

感謝您的回覆。這實際上並不是一種形式 - 我有一個自動完成框。一旦用戶選擇一個值,他應該被重定向到適當的頁面。因此,沒有

屬性。那我該怎麼辦?再次,我不能使用window.location,因爲它不是SEO友好..我如何告訴瀏覽器實際重定向? – Aviv

+0

即使你按照你打算做到這一點的方式去做,它無論如何也不會是SEO友好的。抓取工具不會嘗試在自動完成框中輸入內容。你應該使用window.location。如果您希望自己的網站適合搜索引擎優化,只需編碼,就好像您的網站已被殘疾人使用。確保您的網站的每個部分都可以在沒有此自動完成框的情況下訪問。如果您在某個地方的每個部分都有鏈接,抓取工具將能夠找到這些頁面,並且殘疾人士會愛上您。 –