我写了一个网址重写规则来重定向网址,例如
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]
有人能告诉我这是错的吗?
提前致谢!
答案 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