Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用.htaccess重写具有php头重定向的页面?_Php_.htaccess_Redirect_Rewrite - Fatal编程技术网

如何使用.htaccess重写具有php头重定向的页面?

如何使用.htaccess重写具有php头重定向的页面?,php,.htaccess,redirect,rewrite,Php,.htaccess,Redirect,Rewrite,这是我的第一篇帖子,所以对我放松点 基本上,我在我的htaccess文件中做了一些重写,以将虚构的搜索友好URL更改为实际URL,并且在大多数情况下,它们都能正常工作。例如: 将变成这样: 很好。。。如果那篇文章存在的话。如果文章不存在,php代码将使用以下内容: header("Location: boarderror.php"); exit; 将用户带到boarderror.php。如果用户直接在article.php上到达那里,并且id不好,那么这很好,但是当我试图从搜索友好的url

这是我的第一篇帖子,所以对我放松点

基本上,我在我的htaccess文件中做了一些重写,以将虚构的搜索友好URL更改为实际URL,并且在大多数情况下,它们都能正常工作。例如:

将变成这样:

很好。。。如果那篇文章存在的话。如果文章不存在,php代码将使用以下内容:

header("Location: boarderror.php");
exit;
将用户带到boarderror.php。如果用户直接在article.php上到达那里,并且id不好,那么这很好,但是当我试图从搜索友好的url执行htaccess重定向,并且id不好时,htaccess重定向只会挂起一段时间,然后才会向我发送消息:“页面没有正确重定向”

我想让它在id不正确时转到我的boarderror.php页面。所以基本上我想让我的htaccess页面获得一个服务器友好的URL,切换到真实的URL,然后。。。只要在这一点上放手,PHP就会从这里开始。这是我的HTC接入线路,用于切换:

RewriteRule ^([0-9]+)/(news|review|editorial|podcast)/(.*)$ /article.php?id=$1 [L]

我做错了什么?(顺便说一句,我意识到,如果我正确设置了所有搜索友好URL,那么无论如何都不应该有一个坏id,但我希望安全起见…

重定向规则很好,问题在于你的头函数调用。当您只提供文件名时,头重定向会将用户发送到同一文件夹中的文件,就像只使用文件名创建html链接一样

假设我尝试加载,但该id无效。在这种情况下,它将发送再次触发重定向并陷入无限循环的用户(或者,如果浏览器不够聪明,无法一次又一次地停止请求相同的URL,则会发送)

每个位置的头应该提供一个绝对URI,因此您应该执行以下操作:

header("Location: http://www.negativeworld.org/boarderror.php");
exit;

你的想法没有错。对于错误的ID,可以进行双重重定向。问题是第二次重定向是如何发生的。试一试

header("Location: http://www.negativeworld.org/boarderror.php");


通过重定向,浏览器正在尝试
http://www.negativeworld.org/9999/news/boarderror.php
(9999是错误的ID),它落入了一个无休止的重定向循环中,浏览器在尝试10次后会切断该循环。

您能定义错误的ID吗?因为如果你说的ID不在数据库中,你可以用PHP来处理。仅供参考,始终为CSS、图像和javascript使用绝对路径。搜索友好URL无法找到css文件
header("Location: /boarderror.php");