使用htaccess在URL中获取两个变量

时间:2010-04-02 23:37:51

标签: php .htaccess get methods

通过htaccess在URL中获取两个GET方法是什么方式?

RewriteRule ^adm/(.*)$ adm.php?mode=$1

我已将其用于示例网址:

http://www.domain.com/adm/thismode

现在我想得到两个方法:

http://www.domain.com/adm/thismode/othermode

我试过这个:

RewriteRule ^adm/(.*)$/(.*)$ adm.php?mode=$1&othermode=$2

但似乎没有用......我怎么做呢?

修改

$ mode1 = $ _GET ['mode'];

$ mode2 = $ _GET ['othermode'];

喜欢这个......

再次编辑:

http://www.domain.com/adm/generated/pass/6z9c4q9k8p

正确...这是它必须执行的网址

在PHP中它有这个:

if($mode == "generated")

我希望PHP查看是否在URL中设置了模式,生成的密码是否为其他GET

我按照这种方式放了htaccess:

RewriteRule ^adm/(.*)/(.*)$ adm.php?mode=$1&generated=$2

PHP还将获取URL中生成的密码并将其显示在页面上。

3 个答案:

答案 0 :(得分:10)

你现在遇到的问题好像理查德得到了你所需要的东西?

使用您的示例网址:

http://www.domain.com/adm/generated/pass/6z9c4q9k8p

以及.htaccess中的以下内容

RewriteRule ^adm/(.*)/(.*)/(.*)$ adm.php?mode=$1&generated=$2&pass=$3

然后你可以这样做:

$mode1 = $_GET['mode'];
$generated = $_GET['generated'];
$pass = $_GET['pass'];
if ( $mode1 == 'generated' && $generated == 'pass' ) 
    echo $pass;

或者那不是你的问题?

答案 1 :(得分:6)

在Perl兼容的RegEx中,$是一个锚,表示“结束”。因此,在$之后删除模式中间的^adm/(.*)

RewriteRule ^adm/(.*)/(.*)$ adm.php?mode=$1&othermode=$2

答案 2 :(得分:0)

不是在.htaccess中编写复杂的正则表达式,而是使用简单的

RewriteCond $1 !^adm\.php
RewriteRule ^adm/(.*)$ adm.php/$1 [L]

并在$_SERVER['PHP_SELF']内使用adm.php,这样您就可以处理以adm开头的任何类型的复杂网址,而无需更改.htaccess。