首页 文章

.htaccess页面重定向对AJAX响应有影响

提问于
浏览
1

我正在开发像Facebook这样的社交网站 . 帖子显示在主页上 . 他们可以被喜欢和评论 . 如果喜欢帖子, LIKE TABLE 会通过AJAX更新,并将其计数加1 . likes.php 文件更新LIKE TABLE并返回递增的值 <span class = 'likeCount'>. $likeCount .</span> ,并将其附加到like按钮 .

这在 home.php 中工作正常,但在 user.php (用户 Profiles 页面)上没有 . user.php 提取仅与特定用户相关的帖子 . 每当您尝试在 user.php 页面中对帖子进行评论或评论时,您都会收到PHP错误 . 当我 alert( msg ); 它显示请求页面的整个HTML代码时, user.php 与PHP错误,一些变量未定义 . URL实际上就像这个 http://localhost/mysite/user.php?userID=yax ,但它被重定向并由.htaccess重写为 http://localhost/mysite/user/yax . 我想这是导致问题的原因,因为同样的AJAX在home.php中正常工作 .

AJAX code:

$(".mlike").click(function () {
    $(".murconform").submit(function(e){
        return false;
    });
    var $this=$(this);
    var post_id = $(this).val();
    var user_id = $(".user_id").text();
    alert('Post: '+post_id +' User: '+user_id);
    var request = $.ajax({
      url: "likes.php",
      type: "POST",
      data: { post : post_id , user : user_id },
      dataType: "html"
    });
    request.done(function( msg ) {    
        $this.prev('.likecount').html( msg ); 
    });
});

.htaccess code:

RewriteEngine  on
RewriteBase /mysite/user/

RewriteCond %{THE_REQUEST} /user\.php\?user=([^\s&]+) [NC]
RewriteRule ^ %1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ user.php?user=$1 [L]

在过去的三天里,这让我的工作非常沮丧和停止 . 任何帮助将得到适当的赞赏 . 谢谢 .

2 回答

  • 1

    由于您的AJAX调用正在发出POST请求,您可以添加规则以跳过重写的POST请求:

    RewriteEngine  on
    RewriteBase /mysite/
    
    RewriteCond %{REQUEST_METHOD} POST
    RewriteRule ^ - [L]
    
    RewriteCond %{THE_REQUEST} /user\.php\?user=([^\s&]+) [NC]
    RewriteRule ^ %1? [R=302,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.+)$ user.php?user=$1 [L,QSA]
    
  • 1

    好吧,试试这个:

    在你.htaccess中添加以下规则:

    RewriteRule ^post_to_likes$ path/to/likes.php
    

    现在你的Javascript代码使用这个:

    $.post('hxxp://your.url/post_to_likes',data,callback,'html');
    

相关问题