PHP $ _SERVER('REQUEST_URI')显示意外结果(httpd.conf,ssl)

时间:2018-03-16 19:44:35

标签: php apache https

注意:我不是系统管理员,因此我对编辑系统配置文件的知识和能力有限。

最近全部使用Https的服务器没有像切换之前那样显示我们的404页面。

  

未找到

     

在此服务器上找不到请求的URL / toh。

     

此外,尝试时遇到404 Not Found错误   使用ErrorDocument来处理请求。

在我们的httpd.conf页面中,我们有了

ErrorDocument 404 /admin/404/

当我们将此行更改为

ErrorDocument 404 https://example.com/admin/404/
一切似乎都很好; Not Found错误消失,404页面正确显示。

然而,

此404页面使用

检测用户最初来自哪里
$_SERVER['REQUEST_URI'];

然后该页面将检查数据库,查看该URI是否在那里,然后将客户端重定向到适当的页面。

因此,例如,如果用户来自以下页面:

http://example.com/tacos

如果不是有效链接,404页面将看到/ tacos链接,在数据库中找到它,并将用户重定向到他/她需要去的地方。

现在,$ _SERVER ['REQUEST_URI']只吐出

/admin/404

无论用户来自哪里。

1 个答案:

答案 0 :(得分:0)

显然问题是双重的:

1)根据此帖子here,ErrorDocument链接不得具有域名;它必须采用

格式
ErrorDocument 404 /admin/404

2)在.conf文件中,没有打开RewriteEngine;它被评论出来了。所以我们取消注释以下规则

<VirtualHost 127.0.0.1:80>
    ...

#    RewriteEngine on
#    RewriteCond %{HTTP_HOST} ^example\.com [NC]
#    RewriteCond %{REQUEST_URI} /$ [NC]
#    RewriteRule ^(.*)/$ https://www.example.com/$1 [L,R=301]
    ...
    RedirectMatch permanent ^(.*)/$ https://www.example.com/$1

</VirtualHost>

现在,找到了404页面,$ _SERVER([&#39; REQUEST_URI&#39;])拥有相应的资源。