2012-02-22 259 views
4

我準備開發一個網站,其結構如下。URL重寫.htaccess

我是網址重寫的新手,想知道處理這個問題的最佳方法。

http://domain.com     index.php 
http://domain.com/about    about.php 
http://domain.com/agencies   agencies.php 
http://domain.com/contact   contact.php 
http://domain.com/publisher   publisher.php 
http://domain.com/publisher/sign_up publisher_signup.php 
http://domain.com/agencies/sign_up agencies_signup.php 
http://domain.com/agencies/login  login.php 
http://domain.com/advertiser   advertiser.php 
http://domain.com/advertiser/sign_up advertiser_signup.php 
http://domain.com/advertiser/login login.php 

什麼是最有效的htaccess rewriterule?

我應該手動輸入每一行的重寫還是有一些很好的搜索/替換我可以使用?

我想長期斜線的數量在URL中可能是最4 例如

http://domain.com/area/sub_area/sub_area2/sub_area3 

任何幫助將不勝感激。

回答

2

我很抱歉,但你的「URL」轉型並不均勻(=這是不可能的「概括」,因爲它們不共享完全相同相同的原則),所以這裏的最好的,我可以這樣做:

RewriteEngine On 
^/?$ index.php [NC,QSA,L] 
^/?about$ about.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L] 
^/?(publisher|agencies|advertiser)/sign_up$ /$1_signup.php [NC,QSA,L] 
^/?(publisher|agencies|advertiser)/login$ /login.php [NC,QSA,L] 

但是如果你想「同質化」的東西,不完全適合與你的要求,你可能有這樣的「乾淨」的規則:

RewriteEngine On 
^/?$ index.php [NC,QSA,L] 
^/?about$ about.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)/sign_up$ /$1_signup.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)/login$ /login.php [NC,QSA,L] 

如果你真的要集中一切,你可以做(=將類型傳遞給php文件):

RewriteEngine On 
^/?$ index.php [NC,QSA,L] 
^/?about$ about.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)$ /$1.php [NC,QSA,L] 
^/?(agencies|contact|publisher|advertiser)/(sign_up|login)$ /$2.php?type=$1 [NC,QSA,L] 
+0

謝謝奧利弗。一個變化是^ /?about $ about.php,否則就像一個冠軍 – justanotherdeveloper 2012-02-22 14:52:10

+0

我的榮幸=)我已經糾正 – 2012-02-22 21:12:37