使用 htaccess 在 URL 中获取两个变量
Posted
技术标签:
【中文标题】使用 htaccess 在 URL 中获取两个变量【英文标题】:Getting two variables in the URL with htaccess 【发布时间】: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/… 【参考方案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;
或者这不是你的问题?
【讨论】:
以上是关于使用 htaccess 在 URL 中获取两个变量的主要内容,如果未能解决你的问题,请参考以下文章
如何设置 htaccess 以从用户友好的 URL 获取参数以与 JS 一起使用
使用 htaccess 重写后,如何在 PHP 中获取可见 URL(不是实际 URL)? [复制]