在我的网络服务器中,我创建了一个 .htaccess 文件,其中包含以下行,将错误/丢失的网址(错误404)重定向到php文件 not_found.php 。它工作正常。
ErrorDocument 404 http://myserver.edu.in/not_found.php
我是否可以将错误/遗失的网址列表捕获到文本文件中(或)在错误页面 not_found.php 中显示错误/丢失的网址?
我尝试了 not_found.php 文件中的PHP变量$_SERVER['REQUEST_URI']
来捕获错误/丢失的网址。现在我有两个问题。
由于我在 .htaccess 中使用了错误页面的完整网址,因此失败了。如果我将其更改为ErrorDocument 404 /not_found.php
。它只能在同一目录中正常工作。
在 not_found.php 文件中,我使用了include_once
函数来包含页眉,页脚,图片和脚本。因此,如果我将 .htaccess 更改为ErrorDocument 404 /not_found.php
,则错误页面 not_found.php 将无法在其他目录中正常显示。
例如,http://myserver.edu.in/xxx/trial.php
在这种情况下,我使用了图片和脚本的完整URL。但是,无法使用include_once
函数为PHP文件使用完整URL。
有人可以提出一些更好的想法来解决这个问题吗?
答案 0 :(得分:0)
使用ErrorDocument指令,Apache还设置了一些特殊的环境变量,例如:
REDIRECT_URL
REDIRECT_QUERY_STRING
如果(您已经注意到)错误文档没有以http开头的路径,则这些应该可用。因此,您可以将未找到的请求存储在数据库或某个文本文件中。
但是,$_SERVER["REQUEST_URI"]
也可用,我在类似情况下使用它将请求重定向到另一个域,如果该文件不在该特定服务器上。
答案 1 :(得分:0)
您需要重写丢失的URL,甚至更好,您可以使用PHP来包含not_found.php文件。重定向搜索引擎会认为无法找到目录/not_found.php的问题,并且会认为重定向的网址只是被重定向。
示例:
dots = [dot() for i in range(N)]
fig = plt.figure()
ax = plt.axes(xlim=(0, 10), ylim=(0, 10))
d, = ax.plot([dot.x for dot in dots],[dot.y for dot in dots], 'ro', markersize=3)`
编辑:如果您在实际服务器上不存在文件时使用此功能,则需要重写。