2009-10-16 65 views
2

我想爲網站使用SEO友好的URL。該網站以分層方式顯示信息。例如,如果我的網站是關於汽車的,我希望URL'http://example.com/ford'顯示存儲在我的'汽車'表中的所有福特車型。然後URL'http://example.com/ford/explorer'將顯示所有的福特探索者型號(V-6,V-8,Premium等)。真的基本mod_rewrite問題

現在問題: mod_rewrite是用來將查詢字符串風格的URL重寫爲語義URL還是其他方式?換句話說,當我使用JavaScript來設置window.location=$URL時,該URL應該是查詢字符串版本「http://example.com/page.php?type=ford&model=explorer」,還是我在內部使用「http://example.com/ford/explorer」,然後讓我訪問查詢字符串變量?

希望有人能看到我對這個問題的困惑。對於它的價值,我確實爲我的所有頂級類別製作了獨特的「slu'」(顯然,該網站不是關於汽車的)。


感謝所有幫助到目前爲止。我得到了重寫工作,但它影響了網站上的其他路徑(CSS,JavaScript,圖像)。我爲所有這些使用了正確的路徑結構(即'/images/car.png'和'/css/main.css')。我是否必須爲所有文件使用絕對路徑('http://example.com/css/main.css')?謝謝!

+0

約翰,好像你的編輯問了一個完全不同的問題。有很多方法可以排除特定文件,文件類型或URL被重寫的情況。我建議你搜索已發佈的問題,或者詢問一個具體問題的新問題。 – bmb 2009-10-17 04:09:58

回答

3

通常,使用mod_rewrite的人使用這樣的術語:

我希望mod_rewrite將A重寫爲B.

這意味着外部世界對頁面A的任何請求都會被重寫到服務器上的文件B.

您希望外界看到的樣子

一個網址)http://example.com/ford/explorer

但你的web服務器希望他們看起來像

B)http://example.com/page.php?type=ford&model=explorer

我會說你要重寫(A)看起來像(B),或者要將語義URL重寫爲查詢字符串URL。

由於您的頁面上的所有鏈接均由用戶點擊和/或瀏覽器請求,因此您希望它們看起來像(A)。這包括javascript在window.location中使用的鏈接。他們可以和應該看起來像(A)。

2

一旦你設置了mod_rewrite那麼你的鏈接應該指向URL的mod_rewritten版本(在你的例子中:http://mysite.com/ford/explorer)。在你的系統內部,你仍然會引用這些變量,就好像它們是傳統的查詢字符串名稱值對一樣。

其還值得指出的是,谷歌現在開始從一個搜索引擎的角度主張更符合邏輯的URL,即查詢串過國防部重寫

這是否意味着我應該避免 重寫動態全部網址爲?我們的建議是 ,除非您的 重寫僅限於刪除 不必要的參數,或者您是 非常勤奮地刪除可能導致問題的所有 參數。 如果你改變你的動態網址 使它看起來靜態你應該 意識到,我們可能無法 正確解讀信息 所有情況下 http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html

也值得一讀: http://googlewebmastercentral.blogspot.com/2009/08/optimize-your-crawling-indexing.html

+0

seengee,我不會將「http://mysite.com/ford/explorer」稱爲「mod_rewritten」版本。在URL已被「mod_rewritten」後,我會說它看起來像「http://mysite.com/page.php?type=ford&model=explorer」。我一直使用服務器角度的mod_rewrite單詞。 – bmb 2009-10-16 21:52:53

+0

我想我總是用另一種方式來看待它,而不必考慮確切的語義,不確定哪一個是完全正確的,但都對我有意義。 – robjmills 2009-10-16 22:03:36

+0

我明白爲什麼OP很困惑。不同的人提到它不同的方式。 – bmb 2009-10-16 22:25:37