首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不影响ajax函数的情况下重写URL

在不影响ajax函数的情况下重写URL
EN

Stack Overflow用户
提问于 2019-04-17 01:07:37
回答 2查看 39关注 0票数 4

我正在制作分类广告网站。因为我需要加载一个没有URL参数的广告。我用URL参数成功地做到了这一点。现在我想从URL中删除参数。我在数据库中存储了URL-slug,这可以节省广告的时间。在广告页面加载时,会调用很多函数。这些函数根据URL参数值从数据库中请求数据。我尝试使用htaccess规则。但页面的其余部分和详细信息会像以前一样加载。但是被称为data的ajax函数本应显示在div标签上,但却无法正常工作。它们在这些div中显示整个页面。

到目前为止,我尝试遵循htaccess规则。

代码语言:javascript
复制
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

现在我将展示我的函数示例。

代码语言:javascript
复制
  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的最后一部分并将其存储在变量中。

代码语言:javascript
复制
$url=$_SERVER['REQUEST_URI'];
//echo $url;
$unique_ad_url = basename(parse_url($url, PHP_URL_PATH));

同样,在JavaScript函数中,我传递了ad_id以将其检索到ajax,获取当前正在查看的广告页面的相关数据。

在广告列表页面中,我显示了带有‘url’的广告。这是通过如下方式完成的,

代码语言:javascript
复制
<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以查看值。它还在所有div中显示,这些div应该只显示检索到的数据。正如我上面提到的整个广告页面一样,它显示了回声的价值。

在最后,我希望加载ajax检索的值出现在广告页面上没有这样的问题。网址应该是这样的,http://ads.com/ad/daihatsu-boon-m700s-new-2016-2019-04-05-22-49-04我很感谢你在这个问题上的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-22 12:06:02

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

代码语言:javascript
复制
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]
票数 1
EN

Stack Overflow用户

发布于 2019-04-17 01:18:05

嘿,我也遇到过这个问题。你可能会从中得到帮助。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55713325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档