考虑网址www.something.com/HereWeGo。当有人输入网址时,该网站显示404错误,因为该目录不存在。我可以解析URL以获取查询和HereWeGo,但不能阻止它转到404错误。
如果可以避免使用.htaccess
,我如何通过PHP实现它由于 让
答案 0 :(得分:4)
您需要重写您的网址,以便/something
指向index.php?q=/something
,如果无法找到文件/目录且没有{RewriteRules
,那么您的网络服务器通常会默认抛出404。 1}}与之关联,即使您可以从错误页面解析URL并找到所需的信息。
是否有正当理由不能使用.htaccess
?如果可以的话,我强烈建议你使用它。尤其是因为目前404意味着Google不会将您的网页编入索引。
This article会帮助你。
答案 1 :(得分:2)
你无法避免“触摸”.htaccess,至少是为了重写所有对单个文件的请求(或定义默认的404文件)。你正在使用Apache,而不是服务器的PHP,对吗?
以Kohana 3 Framework为例(以及大多数其他框架),所有请求都被重写为index.php文件,然后该文件处理请求的路由。
RewriteRule .* index.php [L]
下面的代码将处理以404响应并重定向的所有内容。
ErrorDocument 404 /somefile.php
在somefile.php中,您可以检查referer是否为“local”($ _SERVER ['HTTP_REFERER'])以及它所涉及的查询字符串,并以您想要的任何方式进行响应。
答案 2 :(得分:1)
您可以将mod_rewrite用于该特定文件夹,也可以使用自己的自定义404页面(阅读this article)。
答案 3 :(得分:1)
这是您需要在.htaccess
文件中在网络服务器上配置的内容。请查看redirect
或rewrite
的语法。不能仅在PHP中执行此操作,因为它是处理URL请求的Web服务器。
答案 4 :(得分:0)
IIRC,设置自定义404(和其他Web服务器错误)是您的Web服务器环境的一部分。
答案 5 :(得分:0)
除非您更改apache(或其他Web服务器)配置以将404错误重定向到您自己的* .php文件而不是默认错误消息,否则无法避免.htaccess重定向。
答案 6 :(得分:0)
您必须设置一个php文件,例如404.php
作为404错误处理程序文件。执行此操作后,404.php
中的代码看起来像这样:
if (stristr($_SERVER["REQUEST URI"],"HereWeGo")
{
//add handling code here
}
答案 7 :(得分:0)
在目标网页上,只需致电 -
即可header('HTTP/1.0 200 OK');
- 覆盖默认的404状态代码。