发送搜索表单后的PHP重定向

时间:2013-12-19 03:32:47

标签: php .htaccess redirect rewrite

我的脚本有一个小问题。我有一个表格与分钟。 2个字段和最大值4是动态添加的,所以基本上我发送2个vars或3个或4个。我希望我足够清楚。

如果我手动访问网址,重写就可以了。

RewriteRule ^([^/]+)/?([^/]*)/?([^/]*)/?([^/]*)/? browse.php?c=$1&j=$2&l=$3&k=$4 [L,QSA]

但问题是,在提交表单后,我无法将页面重定向到新的URL。

我在PHP header.php中使用此代码:

   $url = "";
   if(isset($_GET["c"])) $url .= $_GET["c"]."/";
   if(isset($_GET["j"])) $url .= $_GET["j"]."/";
   if(isset($_GET["l"])) $url .= $_GET["l"]."/";
   if(isset($_GET["k"])) $url .= $_GET["k"]."/";

   header('HTTP/1.1 301 Moved Permanently');
   header('Location: http://www.samedomainhere123.com/'.$url);

这只是一个示例,代码更大但基本上做同样的事情(如果GET var为空我为前2个vars添加默认值)。

启用重定向功能后,我进入循环。

我该怎么办?是否可以使用htaccess进行重定向?

谢谢。

1 个答案:

答案 0 :(得分:1)

你需要添加一些php代码来检查所做的请求*实际上是否包含browser.php的请求:

if(strrpos($_SERVER['REQUEST_URI'],'/browse.php')===true) {
   $url = "";
   if(isset($_GET["c"])) $url .= $_GET["c"]."/";
   if(isset($_GET["j"])) $url .= $_GET["j"]."/";
   if(isset($_GET["l"])) $url .= $_GET["l"]."/";
   if(isset($_GET["k"])) $url .= $_GET["k"]."/";

   header('HTTP/1.1 301 Moved Permanently');
   header('Location: http://www.domain.com/'.$url);
}