Apache Rewritemap循环

时间:2013-12-02 13:08:56

标签: php regex apache rewrite

我有以下问题。我使用用php编写的重写映射来重写我的URL。

RewriteCond %{REQUEST_URI} !(\.(js|css|less|png|php|swf|flv|jpg))$
RewriteRule ^ /${redirect:$1} [L]

redirectmap看起来像

$stdin = fopen("php://stdin","r");
$uri = trim(fgets($stdin));
$result = processUri($uri);
print "$result\n";
fclose($stdin);

当我输入url example.com/foobar时,应将其重写为example.com/search.php?what=foobar

总体而言,它有效但有时......或者在我第一次重写成功后,当我输入example.com/foobar时,将其重写为example.com/foobar/index.html/index.html/index.html等

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如何只允许一次重定向的众多可能性之一是使用内部cookie。

在执行RewriteRule之前,请

检查内部重定向Cookie
RewriteCond %{HTTP_COOKIE} !^.*htredirect=1.*$ [NC]

然后通过添加标记RewriteRule来修改[CO=htredirect:1:%{HTTP_HOST}],因此设置了重定向cookie,这可以防止再次执行相同的规则。