URL重写 - 读取$ _GET变量的问题

时间:2012-03-30 16:18:05

标签: php mod-rewrite url-rewriting

我写了一个网址重写规则来重定向网址,例如

http://picselbocs.com/projects/helsinki-map-application/{something} to 
http://picselbocs.com/projects/helsinki-map-application/index3.php?pcode={something}.

在index3.php文件的头部,我正在检查$_GET['pcode']变量是否已设置,我的目标是,如果未设置变量(即尝试访问http://picselbocs.com/projects/helsinki-map-application/时) ,重定向到以下地址:http://picselbocs.com/projects/helsinki-map-application/D02081460

不幸的是,重定向不会发生。如果{something}值为空,则表示我没有重定向到http://picselbocs.com/projects/helsinki-map-application/D02081460

php文件中的代码是:

if (!isset($_GET['pcode'])) {
    header('Location: ./D02081460');    
    exit();
}

.htaccess文件显示为:

RewriteEngine On
RewriteRule    ^([A-Za-z0-9]+)?$    index3.php?pcode=$1    [NC,L]

有人能告诉我这是错的吗?

提前致谢!

1 个答案:

答案 0 :(得分:4)

目前,pcode总是被设置,它可能是空的,因为规则总是会通过,所以你会得到index3.php?pcode = {something},但是{something}可以等于''。 / p>

所以:

RewriteEngine On
RewriteRule    ^([A-Za-z0-9]+)/?$  index3.php?pcode=$1    [NC,L]
RewriteRule    ^.*                 index3.php             [NC,L]

添加故障转移并使该组贪婪,以便在未传递任何内容时失败。或者将支票更改为:

if ($_GET['pcode'] == '') {
    header('Location: ./D02081460');    
    exit;
}

希望这有帮助,

ISE