сообщить об ошибке 404 по электронной почте с последним URL

Я делаю страницу 404 с кнопкой для отчета пользователя, что на сайте есть проблема. Идея заключается в том, что когда пользователь нажимает кнопку, я получаю электронное письмо с информацией о последней доступной странице …

Проблема в том, что я использую переменную php ‘$ _SERVER [‘ HTTP_REFERER ‘]’, и это всегда возвращает нулевое значение. Я нашел этот вопрос (В каких случаях HTTP_REFERER будет пустым) и я пришел к выводу, что эта переменная не является решением.

Это мой .htacess

RewriteEngine on
ErrorDocument 404 http://example.com/erro.php
#ErrorDocument 404 /erro.php #this doesnt work... redirect doesnt work

На странице erro.php у меня есть код с функцией email, который работает без проблем, но мне нужен какой-то способ, чтобы взять последнюю страницу, которая вызвала ошибку.

На странице erro.php я пытаюсь использовать:

echo $_SERVER['HTTP_REFERER']; // return null value
echo $_SERVER['REQUEST_URI']; // return page http://example.com/erro.php

Я пытаюсь использовать альтернативу с JQuery (https://stackoverflow.com/a/2415645/2761794):

На странице erro.php

$(document).ready(function() {
var referrer =  document.referrer;
alert(referrer); // return null value
});

Некоторые предложения, чтобы взять последний доступный URL на странице erro.php для отправки по электронной почте?

1

Решение

Как вы готовы работать с mod_rewrite в любом случае и есть PHP есть немного другой подход.

Сначала вы можете обнаружить запрос на файл или каталог, которого нет, и передать его PHP скрипт с переписыванием.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Rewriterule ^(.*) /erro.php?error_path=$1 [R=301,L]

В зависимости от ваших точных настроек вам может понадобиться настроить эту последнюю строку, чтобы

Rewriterule ^(.*) http://example.com/erro.php?error_path=$1 [R=301,L]

Я нахожу это mod_rewrite это немного похоже на вуду и иногда нужно немного «попробовать и посмотреть, что работает».

Тогда в вашем erro.php файл:

<?php
$badfile = $_GET['error_path']; // the URL that 404'd
http_response_code(404); // send the 404 header code
// ... your other code

Конечный результат для посетителя должен быть почти таким же, но у вас будет доступ к нужным вам данным.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]