通过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中生成的密码并将其显示在页面上。
答案 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。