【问题标题】:Passing the entered URL as a query string for error documents with .htaccess将输入的 URL 作为带有 .htaccess 的错误文档的查询字符串传递
【发布时间】:2013-12-08 08:15:11
【问题描述】:

对于我的错误文档,我使用的是单个错误页面 (error.html),我将其重定向到使用

ErrorDocument xxx http://www.example.com/error.html?error=xxx

这很好用,我对 4xx 和 5xx 错误代码中的每一个都做同样的事情,'error=xxx' 查询字符串实际上定义了页面的外观(根据遇到的错误显示什么文本)。

我还需要捕获在 ErrorDocument 重定向发生之前输入的 URL,并将其作为另一个查询字符串附加到 ErrorDocument 位置

ErrorDocument xxx http://www.example.com/error.html?error=xxx**&url=yyy**

我能做到吗?我知道我在某处读到 PHP 是可能的,但我在这个网站上避免使用 PHP(当我尝试时它实际上并没有按预期工作)。

我看过类似的问题,但找不到对我有帮助的问题。

【问题讨论】:

    标签: .htaccess errordocument


    【解决方案1】:

    ErrorDocument 中删除http:// 以避免重定向错误情况如下:

    ErrorDocument 404 /error.html?error=404
    ErrorDocument 500 /error.html?error=500
    ...
    

    这种方式输入的 URI 在您的 error.html 中可用作 REQUEST_URI,因为浏览器 URI 不会改变。

    【讨论】:

    • 我仍然可以访问我的查询字符串以获取这样的页面错误吗?这就是我首先将其更改为实际重定向的原因...
    • 使用来自stackoverflow.com/questions/901115/…stackoverflow.com/a/16366232/1055122 的代码在没有重定向的情况下都不起作用。
    • 我自己也在使用类似的规则。唯一的区别是我使用的是.php,这比在 Javascript 中解析查询字符串要容易得多。我的规则如下:ErrorDocument 404 /error.php?error=404
    • 谢谢。我调整了我的代码并像以前一样实现了 PHP 脚本,这一次它工作了,尽管 .htaccess 的 ErrorDocument 中的查询没有。
    • 嗨,这样做(重定向到我的 html 页面)不起作用。在重定向到错误页面之前,我将其直接发送到捕获查询和目标 URL 的 PHP 脚本。如果没有完整的直接,我无法直接从我的 html 页面捕获查询,所以我实现了脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2016-09-25
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多