【问题标题】:Getting two variables in the URL with htaccess使用 htaccess 在 URL 中获取两个变量
【发布时间】:2011-02-03 21:53:25
【问题描述】:

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

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

我已将其用于示例 URL:

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

对...这是它必须做的URL

在 PHP 中它有这个:

if($mode == "generated")

我想让PHP看看是不是在URL中设置了模式,生成的密码是另一个GET

我把htaccess这样放:

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

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

【问题讨论】:

  • 我认为您需要用“GET 方法”以外的术语来描述您需要的东西,因为 GET 方法有其他含义:en.wikipedia.org/wiki/…

标签: php .htaccess get methods


【解决方案1】:

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

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

【讨论】:

  • +1,但不需要在上面的上下文中转义正斜杠(也可以完全省略美元符号)。
  • 我再次编辑了帖子...在其他方面需要一些帮助
  • @ChristopheD - 酷!谢谢;我将删除“转义斜线”部分。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    使用您的示例网址:

    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;
    

    或者这不是你的问题?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多