2010-04-27 89 views
0

最近我對WordPress的文章結構很感興趣。WordPress以何種方式重寫網頁網址?

他們使用了一個名爲表(wp_posts),並在該表的保存3個相關的領域,如:

post_title 
post_name 
guid 

很明顯,他們節省每一個故事的標題在POST_TITLE場, 和slu in post_name, 和一個帖子的完整url 公會提交。

但是,在地獄,他們的方式重寫這些URL出現在瀏覽器:

http://localhost/wordpress/about/

有這個沒有htaccess的規則!

我檢查了rewrite.php並且不理解一英寸?!

我需要創建類似的頁面,我應該採取哪些步驟!?

+0

答案肯定是在htaccess文件中。 – 2010-04-27 17:00:37

+0

pekka我尊重你的答案,但只有一個重定向index.php在httaccess文件 – 2010-04-27 17:38:33

回答

5

.htaccess文件有一個rewrite指令,將所有請求發送到index.php。 rewrite指令通知Web服務器將原始請求傳遞到其他位置而不進行重定向。因此,index.php接收所有原始參數,包括請求路徑(主機名後面的URL部分,例如「/ about /」)。

當index.php接收到一個請求時,它就像一個前端控制器一樣,根據URL來判斷如何響應。

我從來沒有看過的WordPress的內部運作,所以我不能說他們究竟是如何實現的,但對於index.php的總體思路是這樣的:

  1. 查看請求路徑(例如, 「/左右/」)的客戶端使用
  2. 從請求中提取路徑段塞(「約」)
  3. 查一查其中柱具有嵌塊「約」
  4. 返回適當的交
+0

好的,如果你的假設是正確的,那麼地獄,wordpress瞭解什麼頁面重定向到index.php,而重定向發生在htaccess ?! – 2010-04-27 18:05:46

+1

就像我說過的,所有請求都轉到index.php。 – Jeff 2010-04-27 18:14:15

+0

我想我看到了混亂。這不是重定向,而是重寫。 Web服務器將所有原始請求參數傳遞給index.php,包括請求路徑。這是否回答你的問題? – Jeff 2010-04-27 18:16:52

0

如果您檢查WP_Rewrite課程,將解釋您的許多問題。

基本上,正如大多數人所說的那樣,.htaccess只是將所有未解析到服務器上的實際文件或文件夾的URL改寫爲index.php

WordPress將URL映射到重寫規則列表,該列表是鍵和值的數組。關鍵是一個正則表達式,並且該值將back references映射到參數字符串。

例如,一個重寫規則是;

category/(.+?)/page/?([0-9]{1,})/?$' => 'index.php?category_name=$matches[1]&paged=$matches[2]' 

然後用WP_Query沿着類WP採取的參數和處理該請求。