我正在制作分类广告网站。因此,我需要加载一个没有网址参数的广告。我成功地使用了网址参数。现在,我想从URL中删除参数。我存储了URL-slug,它可以节省数据库中的广告时间。在广告页面加载时间中,调用了许多函数。这些功能根据URL参数值从数据库查询数据。我尝试使用htaccess规则。但是其余页面和详细信息仍像以前一样加载。但是ajax函数称为data的功能应该在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函数。还在id的末尾添加了id参数。
在ad.php文件的顶部,我回显$unique_ad_url
来查看值。它还在所有div中显示本应仅显示检索到的数据。正如我在上面提到的,以及整个广告页面一样,它显示了回声值。
最后,我希望加载ajax检索到的值以在广告页面上显示,而不会出现此类问题。网址应该像
http://ads.com/ad/daihatsu-boon-m700s-new-2016-2019-04-05-22-49-04
感谢您在此问题上的帮助。
答案 0 :(得分:1)
嘿,我也遇到了这个问题。您可能会从中找到帮助。
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
答案 1 :(得分:1)
在.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]