【发布时间】:2010-04-06 08:07:26
【问题描述】:
考虑 URL www.something.com/HereWeGo。当有人输入 url 时,站点显示 404 错误,因为该目录不存在。我可以解析 URL 以获取查询和 HereWeGo,但无法阻止它进入 404 错误。
如果现在可以避免.htaccess,我如何通过PHP实现它
谢谢 让
【问题讨论】:
标签: php .htaccess http-status-code-404
考虑 URL www.something.com/HereWeGo。当有人输入 url 时,站点显示 404 错误,因为该目录不存在。我可以解析 URL 以获取查询和 HereWeGo,但无法阻止它进入 404 错误。
如果现在可以避免.htaccess,我如何通过PHP实现它
谢谢 让
【问题讨论】:
标签: php .htaccess http-status-code-404
您需要重写您的 URL,以便 /something 指向 index.php?q=/something,如果找不到文件/目录并且没有与之关联的 RewriteRules,您的 Web 服务器通常会默认抛出 404 ,即使您可以从错误页面中解析 URL 并找到您需要的信息。
您是否有正当理由不能使用.htaccess?如果可以的话,我强烈建议你使用它。尤其是因为目前 404 将意味着 Google 不会索引您的页面。
This article 会帮助你。
【讨论】:
您无法避免“接触”.htaccess,至少对于将所有请求重写为单个文件(或定义默认 404 文件)。您使用的是 Apache,而不是 PHP 作为服务器,对吧?
以 Kohana 3 框架(和大多数其他框架)为例,所有请求都被重写为 index.php 文件,然后由该文件处理请求的路由。
RewriteRule .* index.php [L]
下面的代码将处理所有以 404 响应并重定向它。
ErrorDocument 404 /somefile.php
在 somefile.php 中,您可以检查引用者是否为“本地”( $_SERVER['HTTP_REFERER'] )以及它是关于哪个查询字符串,并根据您的需要进行响应。
【讨论】:
您可以为该特定文件夹使用 mod_rewrite,也可以使用您自己的自定义 404 页面(阅读 this article)。
【讨论】:
这是您需要在网络服务器上配置的 .htaccess 文件中的内容。查看redirect 或rewrite 的语法。仅在 PHP 中无法做到这一点,因为它是处理 URL 请求的网络服务器。
【讨论】:
IIRC,设置自定义 404(和其他网络服务器错误)是您网络服务器环境的一部分。
【讨论】:
除非您更改您的 apache(或其他网络服务器)配置以将您的 404 错误重定向到您自己的 *.php 文件而不是默认错误消息,否则您无法避免 .htaccess 重定向。
【讨论】:
您必须设置一个 php 文件,例如 404.php 作为您的 404 错误处理程序文件。完成此操作后,404.php 中的代码如下所示:
if (stristr($_SERVER["REQUEST URI"],"HereWeGo")
{
//add handling code here
}
【讨论】:
在您的目标页面上只需调用--
header('HTTP/1.0 200 OK');
--覆盖默认的 404 状态码。
【讨论】: