mod_rewrite дублирует html элементов, следовательно, ломая страницу - PullRequest
1 голос
/ 26 апреля 2020

Я не совсем уверен, что происходит, но недавно я попытался mod_rewrite, чтобы изменить мой URL.

Исходный URL-адрес выглядит так: main / index. php? Board = messages

Я обратился к этому: main / board / messages

Важное примечание: Папка или файл объявлений отсутствует. Я использую его как параметр URL для запроса.

Я использовал эту строку в своем файле .htaccess для изменения URL:

RewriteRule ^main/board/([0-9a-zA-Z_-]+) main/index.php?board=$1

Проблема в том, что он дублирует страницу html элементов, когда я выполняю действие, которое выполняет ajax вызов, такой как отправка сообщения или ответ на сообщение. Когда я осмотрел элементы, он показал, что мой заголовок до нижнего колонтитула был дублирован (например, два элемента заголовка, две навигации), как если бы вся страница html была дублирована.

Когда я проверял Консоль, он также генерируется это:

jquery-3.4.1.min.js:2 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.

Этого не происходит при использовании исходного URL, main / index. php? board = Объявления. На самом деле я не знаю, что происходит.

Вот мое последнее исправление благодаря Уэсли:

Пример одного из моих ajax звонков

$(document).on("click", ".like i", function() {
var postid = $(this).closest("div").parent().find("input").val();
$.post("like.php", {
userid: id,
postid: postid
}, function(data) {
alert(data);
});
});

А вот содержимое подобного. php

<?php echo "Hello"; ?>

По какой-то причине он возвращает весь HTML контент! Этого не происходит при использовании оригинального URL. В чем может быть причина?

enter image description here

1 Ответ

0 голосов
/ 26 апреля 2020

После 1-2 часов устранения неполадок проблема заключается в URL-адресе файла php в вызове ajax, когда установлен mod_rewrite. Я проверил более 15 потоков по этому поводу и ничего не упомянул о том, что mod_rewrite нарушает путь к URL ajax. Но были некоторые ответы из прошлых потоков, которые говорят, что весь html возвращается только тогда, когда URL не существует. Я не думал, что это неправильно, потому что Console Log не говорил, что не может найти файл.

В любом случае, исправление заключается в том, чтобы установить абсолютный путь к файлу php.

Вот точный URL для решения проблемы: / main / like. php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...