PHP-.htaccess和GET参数

PHP-.htaccess和GET参数,php,regex,.htaccess,mod-rewrite,redirect,Php,Regex,.htaccess,Mod Rewrite,Redirect,我试图创建一个简单的重定向到登录脚本上的另一个页面 目前,我正在使用.htaccess将我的URL重写为以下格式: RewriteRule ^login$ ?i=l [L] RewriteRule ^login([^/]*)$ ?i=l&=$1 因此,正常的URL是:domain.com/login——尽管我希望能够执行以下操作:domain.com/login&redirect=/account/settings(其中“redirect”将是成功登录后将重定向到的$\u GET参数)

我试图创建一个简单的重定向到登录脚本上的另一个页面

目前,我正在使用
.htaccess
将我的URL重写为以下格式:

RewriteRule ^login$ ?i=l [L]
RewriteRule ^login([^/]*)$ ?i=l&=$1
因此,正常的URL是:
domain.com/login
——尽管我希望能够执行以下操作:
domain.com/login&redirect=/account/settings
(其中“redirect”将是成功登录后将重定向到的
$\u GET
参数)

我的问题是,如果我访问上面的URL,我会发现一个404页面没有找到。我做错了什么?

试试这些规则:

RewriteRule ^login/?$ ?i=l [L,QSA]
RewriteRule ^login(&[^/]+)/?$ ?i=l$1 [L,NC]
尽管我建议使用:

domain.com/login?redirect=/account/settings
完全摆脱第二条规则


第一条规则中的
QSA
标志将
重定向=/account/settings
查询参数作为
$\u GET
添加到您的php文件中。

我使用
.htaccess
。 它更实用、更简单。我不知道这是否是您需要的,但处理非常简单

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?param=$1 [L,NC]
Url示例:

domain.com/login/account/settings
处理方法在脚本PHP中

$param = $_GET['param'];
echo $param;
返回

login/account/settings
$param = $_SERVER['REQUEST_URI'];
// (PHP 5 >= 5.2.0)
// $param = filter_input(INPUT_SERVER, 'RESQUEST_URI');
$param = explode('/',$param);
print_r($param);
Array( [0]=> [1]=>login [2]=>account [3]=>settings)
或之后

login/account/settings
$param = $_SERVER['REQUEST_URI'];
// (PHP 5 >= 5.2.0)
// $param = filter_input(INPUT_SERVER, 'RESQUEST_URI');
$param = explode('/',$param);
print_r($param);
Array( [0]=> [1]=>login [2]=>account [3]=>settings)
返回

login/account/settings
$param = $_SERVER['REQUEST_URI'];
// (PHP 5 >= 5.2.0)
// $param = filter_input(INPUT_SERVER, 'RESQUEST_URI');
$param = explode('/',$param);
print_r($param);
Array( [0]=> [1]=>login [2]=>account [3]=>settings)

使用此方法可以实现多个目标。

您会混淆
&
。。。
&
不能是url本身的一部分。它必须是“百分比编码”的。
是否应该将参数与URL中的路径分开?