2016-02-26 67 views
1

我正在創建一個可以處理多個GET變量並相應輸出數據的PHP文件,但是我想刪除基礎「category」URL元素以縮短它,與htaccess的,就像這樣:用PHP重寫htaccess多個GET變量的URL基址

http://website.com/news/politics 
http://website.com/videos/funny 
http://website.com/posts/food 

目前我使用不同的文件爲每種類型的,但它是一種痛苦:

RewriteRule ^news/([^/]+)/?$ tpl-news.php?slug=$1 [L,QSA,NC] 
RewriteRule ^videos/([^/]+)/?$ tpl-videos.php?slug=$1 [L,QSA,NC] 
RewriteRule ^posts/([^/]+)/?$ tpl-posts.php?slug=$1 [L,QSA,NC] 
etc ... 

或者,我可以使用以下命令:

RewriteRule ^category/([^/]+)/?$ tpl-category.php?type=$1&slug=$2 [L,QSA,NC] 

我不希望有這樣一個URL:

http://website.com/category/news/politics 
http://website.com/category/videos/funny 
http://website.com/category/posts/food 

不過想從URL中刪除「類別」,像這樣:

http://website.com/news/politics 
http://website.com/videos/funny 
http://website.com/posts/food 

但是其他頁面/網址爲

http://website.com/account/user 
http://website.com/newspost/abcdef // a single post page 
http://website.com/videopost/abcdef // a single video page 

這些「類型」(新聞,視頻,帖子,...)有:例如像下面的措施,不應當受此規則影響數量有限,即我沒有反對預定那些,以便它們不與頁面的其他URL(例如圖像文件夾,管理部分,用戶簡介子頁面等)衝突

回答

1

您可以使用此通用規則:

RewriteRule ^(news|videos|post)/([^/]+)/?$ tpl-category.php?type=$1&slug=$2 [L,QSA] 

或者如果您想要使用現有的.php文件,例如tpl-news.phptpl-post.php等再使用:

RewriteRule ^(news|videos|post)/([^/]+)/?$ tpl-$1.php?slug=$2 [L,QSA] 
+0

謝謝@anubhava,它的工作的類別頁面,但是現在一些其他的URL被搞砸了該規則。我在上面添加了更多規範,請參閱底部的編輯。 – rainerbrunotte

+0

好的檢查更新回答 – anubhava

+1

真棒!奇蹟般有效 !非常感謝 ! :) – rainerbrunotte