【问题标题】:To repeat variables in htaccess rewrite在 htaccess rewrite 中重复变量
【发布时间】:2013-04-21 06:12:02
【问题描述】:

我有一个需要修改的 htaccess。我的网站能够在一个 URL 中显示多个类别,以便可以同时向用户显示不同类别的项目。例如 domain.com/fans.php?cat[]=1&cat[]=2&cat[]=3

为了使这个 URL 友好,我在我的 htaccess 中添加了 1 行用于 1 类别,另一行用于 2 类别,另一行用于 3 类别等等。如下图

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)$ fans.php?cat=$1

以上内容将变为 domain.com/fans/category/1

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)$ fans.php?cat[]=$1&cat[]=$2

上面会变成 domain.com/fans/category/1&2

RewriteRule ^fans/category/([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)&([a-zA-Z0-9\-]+)$ fans.php?cat[]=$1&cat[]=$2&cat[]=$3

上面会变成 domain.com/fans/category/1&2&3

我的问题是,如果我需要显示 4 个类别甚至 10 个类别怎么办?有没有办法简化 htacesss 中的重写规则,允许 n 次类别组合?还是我必须像上面所做的那样不断重复。

【问题讨论】:

    标签: .htaccess mod-rewrite


    【解决方案1】:

    只要有足够的可选正则表达式组,就可以有一个规则,并且空键(cat[]=)不是问题。最多 3 个参数的示例:

    请求:http://example.com/fans/category/1&2&3

    Options +FollowSymlinks -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteRule ^fans/category/([^&]+)&?([^&]+)?&?([^&]+)?$ /fans.php?cat1=$1&cat2=$2&cat3=$3 [L,NC]
    

    但是,当有很多参数时,使用单个重写规则将带有参数的完整 URI 路径传递给脚本会更好,也更通用。像这样:

    RewriteRule ^fans/category/(.*) /fans.php?$1 [L,NC]
    

    并用类似这样的代码获取脚本中的参数:

    <?php 
    $Query = $_SERVER['QUERY_STRING'];
    $Parameters = explode ('&', $Query);
    echo "cat1 = ". $Parameters[0] . "<br />";
    echo "cat2 = ". $Parameters[1] . "<br />";
    echo "cat3 = ". $Parameters[2] . "<br />";
    ...
    ?>
    

    有几种方法可以在 php 中实现相同的结果,也许还有更好的方法,这只是一个示例。

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 2016-10-14
      • 1970-01-01
      • 2015-09-22
      • 2012-04-18
      相关资源
      最近更新 更多