【问题标题】:Rewrite htaccess URL base for multiple GET variables with PHP使用 PHP 重写多个 GET 变量的 htaccess URL 库
【发布时间】:2016-02-26 22:05:11
【问题描述】:

我希望创建一个可以处理多个 GET 变量并相应地输出数据的 PHP 文件,但是我想使用 htaccess 删除基本“类别”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]

我不想有这样的网址:

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

但是,其他页面/URL,例如下面的,不应受此规则影响:

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

这些“类型”(新闻、视频、帖子...)的数量有限,即我不反对预先定义这些,这样它们就不会与页面的其他 URL(例如图像文件夹、管理部分,用户个人资料子页面等)

【问题讨论】:

    标签: php .htaccess url-rewriting get rewrite


    【解决方案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]
    

    【讨论】:

    • 谢谢@anubhava,它确实适用于类别页面,但是现在其他一些 URL 与该规则混淆了。我在上面添加了更多规范,请参阅底部的编辑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2011-06-23
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多