【问题标题】:htaccess getting additional php arguments [duplicate]htaccess获取额外的php参数[重复]
【发布时间】:2016-12-02 21:49:07
【问题描述】:

我的 .htaccess 代码

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1

我的 index.php 代码如下

<?php

$key=isset($_GET['key']) ? $_GET['key'] : 'home';
if( in_array( $key, array('home','about','terms') ) ){
   include("$key.php");
}else{
   include("profile.php");
}
?>

何时使用“http://localhost/project_dir/home”工作正常(home 分配给参数 '?key')。但我想传递额外的参数,例如“http://localhost/project_dir/home?a=abc123

我怎样才能得到参数“a”($_GET['a'])?

【问题讨论】:

    标签: php .htaccess arguments parameter-passing


    【解决方案1】:

    看看flags - in particular, QSA

    QSA|qsappend

    当替换 URI 包含查询字符串时,RewriteRule 的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用 [QSA] 标志会合并查询字符串。

    考虑以下规则:

    RewriteRule "/pages/(.+)" "/page.php?page=$1" [QSA]
    

    使用 [QSA] 标志,对 /pages/123?one=two 的请求将映射到 /page.php?page=123&amp;one=two。如果没有 [QSA] 标志,相同的请求将被映射到 /page.php?page=123 - 也就是说,现有的查询字符串将被丢弃。

    Apache 手册,© 2016 The Apache Software Foundation,Apache License 2.0

    因此,将您的 .htacess 规则更改为:

    RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?key=$1 [QSA]
    

    【讨论】:

    • 非常感谢@Ben。工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2015-04-18
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    相关资源
    最近更新 更多