2012-04-26 84 views
1

請對我輕鬆一點,因爲這是一個全新的世界。用php和.htaccess漂亮的網址

所以我建立和Little CMS和使用GET來控制url.I中的PageId或頁面永久使用該腳本工作正常時,只有經過1個變量通過查詢字符串

例如我的htaccess:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?p=$1 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?p=$1 

然後,我可以通過我的索引文件中控制的id或permalink調用我的頁面。我無法弄清楚的一件事是如何在URL中包含父級永久鏈接以及調用子頁面時。

另一個例子。如果我把一個網頁,是父母的孩子:

http://site.com/index.php?p=post-title 

如果標題後是父稱號的子女;我如何使用網址

http://site.com/parent-title/post-title? 
+0

您是否在討論某人在請求「http:// site.com/parent-title/post-title」時的請求像'/index.php?p = post-title&parent = parent-title'那樣重寫到你的index.php控制器中? – 2012-04-26 21:47:08

+0

我想到了,但我想知道是否有一種方法來自動包括父標題時,只調用後標題 我相信有一種方法,但mod_rewrites都是英語對我來說。 但要回答你的問題。是的,我喜歡你的建議,但仍然保持清潔的地址 – 2012-04-26 21:49:34

+0

所以你的意思是:'/index.php?p =父標題/標題後'? – 2012-04-26 21:50:26

回答

0

首先,我們可以將所有代碼放在Apache .htaccess文件中。這可能看起來像這樣:

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^users/(\d+)*$ ./profile.php?id=$1 
RewriteRule ^threads/(\d+)*$ ./thread.php?id=$1 
RewriteRule ^search/(.*)$ ./search.php?query=$1 

讓我們從頂部開始,繼續努力,以更好地理解這裏發生的事情。第一行將環境設置爲使用Options指令遵循符號鏈接。這可能也可能不是必需的,但是一些網絡主機使用符號鏈接(類似於MacOSX中的別名或快捷方式是Windows)來處理常見的HTTP請求錯誤,這些錯誤通常是符號鏈接文件,或者至少這是我理解推理的方式。接下來我們告訴Apache我們將使用重寫引擎。接下來的兩行非常非常重要,它限制了僅將URL重寫爲實際不存在的路徑。這可以防止下面的例子匹配example.com/images/logo.png的規則。第一個使用!-d標誌防止現有目錄,第二個使用!-f意味着忽略現有文件。 接下來的三行是實際的URL重寫命令。每一行都會創建一條規則,試圖將正則表達式模式與傳入的URL進行匹配