Я делаю объявления на сайте. При этом мне нужно загрузить одно объявление без параметров URL. Я сделал это с параметрами URL успешно. Теперь я хочу удалить параметры из URL. Я сохранил URL-слаг, который создан для экономии времени рекламы в базе данных. Во время загрузки страницы объявления вызывается много функций. Эти функции запрашивают данные из базы данных в соответствии со значением параметра URL. Я попробовал с правилами htaccess. Но остальная часть страницы и детали загружаются как прежде. Но функции ajax, называемые данными, которые должны отображаться в тегах div, не работают. Они показывают целую страницу внутри этих элементов.
До сих пор я пытался следовать правилам htaccess.
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]
ReWriteRule ^ad/([a-zA-Z0-9-/]+)$ ad.php?url=$1
ReWriteRule ^ad/([a-zA-Z0-9-/]+)/ ad.php?url=$1
Теперь я покажу образец моей функции.
function load_reviews(){
var id = "<?php echo $ad->get_ad_id($unique_ad_url) ?>";
$.ajax({
url: './middle/review/load_reviews',
cache:true,
type: 'GET',
async: false,
data:{
id: id
},
success: function(response){
$('#chat_area').html(response);
},
error: function (x, e) {
if (x.status == 0) {
console.log('You are offline!! - Please Check Your Network.');
} else if (x.status == 404) {
console.log('Requested URL not found.');
} else if (x.status == 500) {
console.log('Internal Server Error.');
} else if (e == 'parsererror') {
console.log('Error. - Parsing JSON Request failed.');
} else if (e == 'timeout') {
console.log('Request Time out.');
} else {
console.log('Unknown Error. - ' + x.responseText);
}
}
});
return false;
}
В верхней части файла ad.php я включаю эти строки кода, чтобы захватить последнюю часть URL и сохранить ее в переменной.
$url=$_SERVER['REQUEST_URI'];
//echo $url;
$unique_ad_url = basename(parse_url($url, PHP_URL_PATH));
Аналогично в функциях JavaScript я передал ad_id для извлечения его в ajax, чтобы получить релевантные данные для текущей страницы просмотра объявления.
На странице со списком объявлений я показывал объявления с их URL. Это делается, как показано ниже,
<a href="ad/'.$this->url_slug($ad['AD_URL']).'" class="card all-card">
Подробнее =>
Когда я вижу сетевые ответы от инструментов разработки chrome, он показывает бесконечную загрузку одних и тех же css, js, других внешних библиотечных файлов и функции ajax, называемой откликами рекурсивно. Также он добавил параметр id в конец URL-адреса ajax.
В верхней части файла ad.php я выводю $unique_ad_url
, чтобы увидеть значение. Он также показывает внутри всех div, которые должны показывать только восстановленные данные. Как я уже упоминал выше, вместе со всей страницей объявления это показывает значение эха.
В конце я хочу, чтобы загруженные ajax-значения без проблем отображались на странице объявления. И URL, как ожидается, будет как,
http://ads.com/ad/daihatsu-boon-m700s-new-2016-2019-04-05-22-49-04
Я ценю вашу помощь в этом вопросе.