gpt4 book ai didi

.htaccess - 不影响ajax功能的URL重写

转载 作者:行者123 更新时间:2023-12-05 01:17:46 27 4
gpt4 key购买 nike

我正在制作分类广告网站。因为我需要加载一个没有 URL 参数的广告。我用 URL 参数成功地做到了。现在我想从 URL 中删除参数。我在数据库中存储了 URL-slug,它是为了节省广告时间而构建的。在广告页面加载时调用了许多函数。这些函数根据 URL 参数值从数据库中查询数据。我尝试使用 htaccess 规则。但是页面的其余部分和详细信息像以前一样加载。但是 ajax 函数调用了应该显示在 div 标签上的数据不起作用。它们在这些 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 获取当前查看广告页面的相关数据。

在广告列表页面中,我展示了带有其网址的广告。这是由如下完成的,
<a href="ad/'.$this->url_slug($ad['AD_URL']).'" class="card all-card">

更多=>
当我看到来自 chrome 开发工具的网络响应时,它显示无限加载相同的 css、js、其他外部库文件和递归调用响应的 ajax 函数。它还在 ajax URL 的末尾添加了 id 参数。

在 ad.php 文件的顶部,我回显 $unique_ad_url看值(value)。它还显示在所有应该只显示检索到的数据的 div 中。正如我上面提到的以及整个广告页面,它显示了回声值。

最后,我希望加载 ajax 检索到的值以在没有此类问题的情况下呈现在广告页面上。并且 URL 应该是这样的, http://ads.com/ad/daihatsu-boon-m700s-new-2016-2019-04-05-22-49-04感谢您对此问题的帮助。

最佳答案

在您的 .htaccess 中尝试这些规则:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ReWriteRule ^ad/([\w-]+)/?$ ad.php?url=$1 [L,NC,QSA]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]

关于.htaccess - 不影响ajax功能的URL重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55713325/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com