2009-05-27 152 views
1

我的網站中有許多頁面,正如人們所期望的那樣。.htaccess重寫問題

例如:

的index.php submit.php view.php的id =等等

我想這些改寫像

指數/ 提交/ 視圖/等等

這樣做的最好方法是什麼?

回答

1

通過.htaccess處理它的方法重寫可能會產生一些頭痛的問題。這似乎是一個基本的答案,但除非你正規表達,否則你將會迷失方向。

但是,有幾種處理方法。我假設你只有index.php,submit.php和view.php與一個id關聯。

 
RewriteEngine On 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php?id=$2 
RewriteRule ^(index|submit|view)/(\d+)$ /$1.php 

以下是它的工作方式:您告訴.htaccess打開重寫引擎。第2步,你給該網站的參數,告訴它如何完成。在這種情況下,參數爲:在URL的開頭,在域名後面,檢查索引,提交或查看。如果存在,它會查找該ID。如果兩者都存在,它將返回值爲/(index, submit, or view)?id=$id

第二個是萬一身份證不可行。

這是處理它的一種簡單方法。處理這將是一個更復雜的方式...

 
RewriteEngine On 
RewriteRule ^([a-z]+)/?(\d+)?$ /$1.php?id=$2 

這將加載無論是寫在只有大寫和小寫字母常規字母字符,使用它作爲文件名,然後檢測是否ID是甚至是必要的 - 它會加載沒有。

你應該一定要包括你的$_GET行一些保障措施,如果名稱是錯誤的或者不返回值得的東西返回錯誤。

你應該玩弄它,在一壺咖啡和一些酒精中研究正則表達式(我相信正則表達式是現代程序員酗酒的頭號原因,但我可能是錯的; -P ...)直到你找到一個適合你係統的方案。

作爲一個側面說明,因爲你需要,你可以有許多的RewriteRules,但他們每次總是從最上面的一個優先處理。我意識到這聽起來像常識,但知道調試時很重要。