使用PHP重写多个GET变量的htaccess URL基础

时间:2016-02-26 22:05:11

标签: php .htaccess url-rewriting get rewrite

我希望创建一个可以处理多个GET变量并相应地输出数据的PHP文件,但是我想删除基类"类别" URL元素为了缩短它,使用htaccess,如下所示:

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]

我不想拥有像:

这样的网址
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 个答案:

答案 0 :(得分: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]