0

在发布帖子并使用 htaccess 重写 url 后,我想收到一封来自 $_GET 的信。例如:

$_POST['setting'] = 'w';

发布后,我将进行如下重定向:

/*more post variables here*/

$setting = $_POST['setting'];
header("Location{$basedir}page/$budget/$region/$reservations/$pool/$conference/$open/$meal/$setting/");
exit();

我的 htaccess 配置如下所示:

RewriteRule ^page/([0-9]+).([0-9]+)/([0-9]+).([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/[a-z]/?$ page.php?budget=$1.$2&region=$3.$4&reservations=$5&pool=$6&conference=$7&open=$8&meal=$9&setting=$10

我也试过这个,但没有运气:

RewriteRule ^page/([0-9]+).([0-9]+)/([0-9]+).([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/?$ page.php?budget=$1.$2&region=$3.$4&reservations=$5&pool=$6&conference=$7&open=$8&meal=$9&setting=$10

重定向后 $_GET['setting'] 不是我期望的字符串,而是一个整数。

URL example: server/site/page/0.0/0.0/0/1/1/0/0/w/

这就是 $_GET 的 var_dump 的样子。

array (size=8)
 'budget' => string '15.30' (length=5)
 'region' => string '0.0' (length=3)
 'reservations' => string '0' (length=1)
 'pool' => string '1' (length=1)
 'conference' => string '0' (length=1)
 'open' => string '1' (length=1)
 'meal' => string '0' (length=1)
 'setting' => string '150' (length=3)

知道这里发生了什么或我做错了什么吗?谢谢

4

2 回答 2

1

mod_rewrite 中有 9 个反向引用的限制,我从这里RewriteRule 使用 $10、$11、$12 等读取它,因此解决方案可以将变量中的下一个引用添加为字符串并使用 php explode 函数来捕获结果。

于 2013-05-24T22:40:03.013 回答
0

试试这样;

RewriteRule ^page/([0-9]+).([0-9]+)/([0-9]+).([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([a-zA-Z]+)/?$ page.php?budget=$1.$2&region=$3.$4&reservations=$5&pool=$6&conference=$7&open=$8&meal=$9&setting=$1
于 2013-05-23T21:46:45.407 回答