Getting two variables in the URL with htaccess

2019-01-18 01:26发布

问题:

What way it is to be to get two GET methods in the URL by htaccess?

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

I've used that for the example URL:

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

Now I want to get two methods like:

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

I've tried this:

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

But doesn't seem to work... how do I get it to do that?

EDIT:

$mode1 = $_GET['mode'];

$mode2 = $_GET['othermode'];

Like this...

EDIT AGAIN:

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

Right... this is the URL it has to do

And in the PHP it has this:

if($mode == "generated")

I want the PHP to see if the mode is set in the URL and the generated password is the other GET

I put the htaccess as this way:

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

The PHP will also grab the generated password in the URL and display it on the page.

回答1:

what's the problem you're having now Seems like Richard got you what you needed?

Using your example URL:

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

and the following in your .htaccess

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

then you can do:

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

or was that not your question?



回答2:

In Perl compatible RegExs a $ is an anchor, which denotes "the end". So remove the $ from the middle of your pattern, after ^adm/(.*):

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


回答3:

Instead of writing complex regular expressions in the .htaccess, I would just use a simple

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

and work with $_SERVER['PHP_SELF'] inside adm.php so you can handle any kind of complex URL which starts with adm without changing the .htaccess.